【问题标题】:Message sent, not receiving mail - SMTP邮件已发送,但未收到邮件 - SMTP
【发布时间】:2015-10-15 06:40:03
【问题描述】:

我有一个功能应该通过 SMTP 从outlook365 和我的普通PEAR 邮件发送优惠券。

我目前正在测试将其发送到我自己的电子邮件。当我点击提交时,我收到了成功消息 "Message successfully sent!" 但是当我检查我的电子邮件收件箱时,我什么也没收到。

有什么我没有包括或做错的吗?

<?
ini_set("include_path", '/home/busaweb/php:' . ini_get("include_path") );
require_once "Mail.php";
include('Mail/mime.php');
function send_notification_email($coupon, $subject){
$email_from = "coupons@*****.com";
$email_to = "jason@*****.com";
$email_subject = $subject;

// Email Message
// This is an HTML formatted message
$email_html_msg = file_get_contents('email_templates/notification.html', true);
$email_html_msg = str_replace("*|HEADER|*", $subject, $email_html_msg);
$email_html_msg = str_replace("*|COUPON-ID|*", $coupon->id, $email_html_msg);
$email_html_msg = str_replace("*|TYPE|*", $coupon->type, $email_html_msg);
$email_html_msg = str_replace("*|PRODUCT|*", $coupon->product, $email_html_msg);
$email_html_msg = str_replace("*|DESC|*", $coupon->desc, $email_html_msg);
$email_html_msg = str_replace("*|FIRST-NAME|*", $coupon->first_name, $email_html_msg);
$email_html_msg = str_replace("*|LAST-NAME|*", $coupon->last_name, $email_html_msg);
$email_html_msg = str_replace("*|EMAIL|*", $coupon->email, $email_html_msg);
$email_html_msg = str_replace("*|ZIPCODE|*", $coupon->zip, $email_html_msg);
$email_html_msg = str_replace("*|PRODUCTS|*", stripslashes($coupon->products), $email_html_msg);
$email_html_msg = str_replace("*|NEWSLETTER|*", $coupon->newsletter, $email_html_msg);


// start setting up the email header
$headers = "From: ".$email_from;

// create boundary string
// boundary string must be unique using MD5 to generate a pseudo random hash
$random_hash = md5(date('r', time())); 
$mime_boundary = "==Multipart_Boundary_x{$random_hash}x";

// set email header as a multipart/mixed message
// this allows the sending of an attachment combined with the HTML message
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";

// multipart boundary for the HTML message
$email_message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=UTF-8\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_html_msg . "\n\n";

// end the multipart message
$email_message .= "--{$mime_boundary}--\n";

$host = "ssl://smtp.office365.com";
$port = "587";
$username = "coupons@*****.com";
$password = "*****";
$headers = array ('From' => $email_from,   'To' => $email_to,   'Subject' => $headers);
$smtp = Mail::factory('smtp', array('host' => $host, 'port' => $port,  'auth' => true, 'username' => $username, 'password' => $password));
$sendit = $smtp->send($email_to, $headers, $email_message);  
$sendit->SMTPDebug  = 1;
if (PEAR::isError($mail)) {   
echo("<p>" . $mail->getMessage() . "</p>");  
 } 
else {   
echo("<p>Message successfully sent!</p>"); 
 }
 }

【问题讨论】:

    标签: php email smtp pear


    【解决方案1】:

    您的邮件可能已传输到服务器,但随后在某处被阻止。这可能是因为奇怪的内容,例如

    $headers = "From: ".$email_from;
    ...
    $headers .= "\nMIME-Version: 1.0\n" .
      "Content-Type: multipart/mixed;\n" .
      " boundary=\"{$mime_boundary}\"";
    ...
    $headers = array ('From' => $email_from,   'To' => $email_to,   'Subject' => $headers);
    

    因此,您有效地构建了一个包含 From 和一些 MIME 设置的标头,但是您使用此标头作为邮件的主题,这真的很奇怪。我不知道结果会是什么,但它可能只是一些无效的邮件,因此被中间的某个服务器吃掉或阻止。

    除此之外:您为什么要尝试构建多部分/混合邮件,其中多部分由单个部分组成?没有错,只是没用。

    【讨论】:

      猜你喜欢
      • 2019-07-16
      • 1970-01-01
      • 2010-11-03
      • 2015-09-11
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      相关资源
      最近更新 更多