Wordpress wp_mail funkcija

Wordpress wp_mail funkcija

offline
  • Niko E
  • Software & Information Engineering
  • Pridružio: 05 Maj 2009
  • Poruke: 135
  • Gde živiš: Wien

Želim da preko ove funkcije šaljem i-mejlove jer je to jedini način koji radi kod mene na free hostingu.
<html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email   {   //send email   $to = $_REQUEST['email'] ;   $subject = $_REQUEST['subject'] ;   $message = $_REQUEST['message'] ;   function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {    // Compact the input, apply the filters, and extract them back out    extract( apply_filters( 'wp_mail', compact( 'to', 'subject', 'message', 'headers', 'attachments' ) ) );    if ( !is_array($attachments) )       $attachments = explode( "\n", str_replace( "\r\n", "\n", $attachments ) );    global $phpmailer;    // (Re)create it, if it's gone missing    if ( !is_object( $phpmailer ) || !is_a( $phpmailer, 'PHPMailer' ) ) {       require_once ABSPATH . WPINC . '/class-phpmailer.php';       require_once ABSPATH . WPINC . '/class-smtp.php';       $phpmailer = new PHPMailer( true );    }    // Headers    if ( empty( $headers ) ) {       $headers = array();    } else {       if ( !is_array( $headers ) ) {          // Explode the headers out, so this function can take both          // string headers and an array of headers.          $tempheaders = explode( "\n", str_replace( "\r\n", "\n", $headers ) );       } else {          $tempheaders = $headers;       }       $headers = array();       $cc = array();       $bcc = array();       // If it's actually got contents       if ( !empty( $tempheaders ) ) {          // Iterate through the raw headers          foreach ( (array) $tempheaders as $header ) {             if ( strpos($header, ':') === false ) {                if ( false !== stripos( $header, 'boundary=' ) ) {                   $parts = preg_split('/boundary=/i', trim( $header ) );                   $boundary = trim( str_replace( array( "'", '"' ), '', $parts[1] ) );                }                continue;             }             // Explode them out             list( $name, $content ) = explode( ':', trim( $header ), 2 );             // Cleanup crew             $name    = trim( $name    );             $content = trim( $content );             switch ( strtolower( $name ) ) {                // Mainly for legacy -- process a From: header if it's there                case 'from':                   if ( strpos($content, '<' ) !== false ) {                      // So... making my life hard again?                      $from_name = substr( $content, 0, strpos( $content, '<' ) - 1 );                      $from_name = str_replace( '"', '', $from_name );                      $from_name = trim( $from_name );                      $from_email = substr( $content, strpos( $content, '<' ) + 1 );                      $from_email = str_replace( '>', '', $from_email );                      $from_email = trim( $from_email );                   } else {                      $from_email = trim( $content );                   }                   break;                case 'content-type':                   if ( strpos( $content, ';' ) !== false ) {                      list( $type, $charset ) = explode( ';', $content );                      $content_type = trim( $type );                      if ( false !== stripos( $charset, 'charset=' ) ) {                         $charset = trim( str_replace( array( 'charset=', '"' ), '', $charset ) );                      } elseif ( false !== stripos( $charset, 'boundary=' ) ) {                         $boundary = trim( str_replace( array( 'BOUNDARY=', 'boundary=', '"' ), '', $charset ) );                         $charset = '';                      }                   } else {                      $content_type = trim( $content );                   }                   break;                case 'cc':                   $cc = array_merge( (array) $cc, explode( ',', $content ) );                   break;                case 'bcc':                   $bcc = array_merge( (array) $bcc, explode( ',', $content ) );                   break;                default:                   // Add it to our grand headers array                   $headers[trim( $name )] = trim( $content );                   break;             }          }       }    }    // Empty out the values that may be set    $phpmailer->ClearAddresses();    $phpmailer->ClearAllRecipients();    $phpmailer->ClearAttachments();    $phpmailer->ClearBCCs();    $phpmailer->ClearCCs();    $phpmailer->ClearCustomHeaders();    $phpmailer->ClearReplyTos();    // From email and name    // If we don't have a name from the input headers    if ( !isset( $from_name ) )       $from_name = 'WordPress';    /* If we don't have an email from the input headers default to wordpress@$sitename     * Some hosts will block outgoing mail from this address if it doesn't exist but     * there's no easy alternative. Defaulting to admin_email might appear to be another     * option but some hosts may refuse to relay mail from an unknown domain. See     * http://trac.wordpress.org/ticket/5007.     */    if ( !isset( $from_email ) ) {       // Get the site domain and get rid of [Link mogu videti samo ulogovani korisnici]       $sitename = strtolower( $_SERVER['SERVER_NAME'] );       if ( substr( $sitename, 0, 4 ) == 'www.' ) {          $sitename = substr( $sitename, 4 );       }       $from_email = 'wordpress@' . $sitename;    }    // Plugin authors can override the potentially troublesome default    $phpmailer->From     = apply_filters( 'wp_mail_from'     , $from_email );    $phpmailer->FromName = apply_filters( 'wp_mail_from_name', $from_name  );    // Set destination addresses    if ( !is_array( $to ) )       $to = explode( ',', $to );    foreach ( (array) $to as $recipient ) {       try {          // Break $recipient into name and address parts if in the format "Foo <bar@baz.com>"          $recipient_name = '';          if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) {             if ( count( $matches ) == 3 ) {                $recipient_name = $matches[1];                $recipient = $matches[2];             }          }          $phpmailer->AddAddress( $recipient, $recipient_name);       } catch ( phpmailerException $e ) {          continue;       }    }    // Set mail's subject and body    $phpmailer->Subject = $subject;    $phpmailer->Body    = $message;    // Add any CC and BCC recipients    if ( !empty( $cc ) ) {       foreach ( (array) $cc as $recipient ) {          try {             // Break $recipient into name and address parts if in the format "Foo <bar@baz.com>"             $recipient_name = '';             if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) {                if ( count( $matches ) == 3 ) {                   $recipient_name = $matches[1];                   $recipient = $matches[2];                }             }             $phpmailer->AddCc( $recipient, $recipient_name );          } catch ( phpmailerException $e ) {             continue;          }       }    }    if ( !empty( $bcc ) ) {       foreach ( (array) $bcc as $recipient) {          try {             // Break $recipient into name and address parts if in the format "Foo <bar@baz.com>"             $recipient_name = '';             if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) {                if ( count( $matches ) == 3 ) {                   $recipient_name = $matches[1];                   $recipient = $matches[2];                }             }             $phpmailer->AddBcc( $recipient, $recipient_name );          } catch ( phpmailerException $e ) {             continue;          }       }    }    // Set to use PHP's mail()    $phpmailer->IsMail();    // Set Content-Type and charset    // If we don't have a content-type from the input headers    if ( !isset( $content_type ) )       $content_type = 'text/plain';    $content_type = apply_filters( 'wp_mail_content_type', $content_type );    $phpmailer->ContentType = $content_type;    // Set whether it's plaintext, depending on $content_type    if ( 'text/html' == $content_type )       $phpmailer->IsHTML( true );    // If we don't have a charset from the input headers    if ( !isset( $charset ) )       $charset = get_bloginfo( 'charset' );    // Set the content-type and charset    $phpmailer->CharSet = apply_filters( 'wp_mail_charset', $charset );    // Set custom headers    if ( !empty( $headers ) ) {       foreach( (array) $headers as $name => $content ) {          $phpmailer->AddCustomHeader( sprintf( '%1$s: %2$s', $name, $content ) );       }       if ( false !== stripos( $content_type, 'multipart' ) && ! empty($boundary) )          $phpmailer->AddCustomHeader( sprintf( "Content-Type: %s;\n\t boundary=\"%s\"", $content_type, $boundary ) );    }    if ( !empty( $attachments ) ) {       foreach ( $attachments as $attachment ) {          try {             $phpmailer->AddAttachment($attachment);          } catch ( phpmailerException $e ) {             continue;          }       }    }    do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );    // Send!    try {       $phpmailer->Send();    } catch ( phpmailerException $e ) {       return false;    }    return true; }   } else //if "email" is not filled out, display the form   {   echo "<form method='post' action='mailform.php'>   Email: <input name='email' type='text' /><br />   Subject: <input name='subject' type='text' /><br />   Message:<br />   <textarea name='message' rows='15' cols='40'>   </textarea><br />   <input type='submit' />   </form>";   } ?> </body> </html>

Naravno da nema nikakve veze sa Wordpress-om i bez attachments.
Šta treba da dodam / izbacim da bi to radilo?

Uz tu stranu idu još class-phpmailer.php i class-smtp.php koliko mogu da vidim iz koda. Da li je potrebno i nih menjati

Hvala unapred.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Nije mi jasno sto uzimas klase od WP-a? Sto nenapises svoju? Bar to sto ti treba je jednostavno!!! Procitaj na wp code vise o toj kasi i kako se instancira i koje metode su ti potrebne za slanje i proveru!!!



Ko je trenutno na forumu
 

Ukupno su 1198 korisnika na forumu :: 79 registrovanih, 5 sakrivenih i 1114 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: alexbr, antonije64, Asteker, Avalon015, Ba4e, babaroga, Ben Roj, Bivan, Bobrock1, Bojan198527, bokisha253, Boxy, brause, Centauro, darionis, dozorni, draganl, eagle.rs, FOX, france93, Georgius, Igor Antonic, InzenjerBL, istina, Jeremiah, jodzula, Jomini, Kobrim, kojotuzamku, komsija1, Kriglord, Kruger, kunktator, kybonacci, Leonov, Lester Freamon, Lošmi, lucko1, luka1978, Miki01, milikonst, MiloradKomadic, mocnijogurt, moldway, Mrav Obrad, Mskok, nelezele, oddsock, pein, PenzosGSP, pera bager, perko91, PitterBg, PlayerOne, procesor, radoznao, RajkoB, Savantije, sekretar, Shajlok, sixpac, sony771, Srpska zauvjek, sspp, Stoilkovic, Teodor60, Tila Painen, Tribal, vjetar, Vlada1389, vojnik švejk, x9, Zanim98, zdrebac, Zec, zokilivac, zombicar153, Zoran1959, 800077