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       $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 1058 korisnika na forumu :: 41 registrovanih, 9 sakrivenih i 1008 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: 357magnum, A.R.Chafee.Jr., cifra, DonRumataEstorski, Duh sa sekirom, Fabius, FileFinder, Frunze, goxin, Istman, kolle.the.kid, Kubovac, kybonacci, Luka Blažević, mean_machine, menges, milenko crazy north, Milos ZA, milos.cbr, misa1xx, mkukoleca, nemkea71, novator, Pakito93, Parker, pavlo, procesor, robert1979, S2M, sevenino, skankhunt42, slonic_tonic, Srle993, stankolich, Steeeefan, styg, suton, vlada035, zdrebac, zillbg, Zoca