PHPMailer - 如何从"发送"正确地

时间:2014-09-26 09:07:07

标签: php gmail phpmailer

我正在尝试为我正在进行的项目制作一个很棒的表单,但是我很努力地从"发送#34;财产正确。没有想法是什么,或者它只是意味着这样?

查看我的代码部分,然后使用已编辑的"来源"隐藏实际的电子邮件等。

部分配置 (已编辑以匹配屏幕截图数据)

$config_mail = array(
    'MAIL_FROM'                 => 'recipient.mail@example.com',
    'MAIL_NAME'                 => 'Company Name',
    'MAIL_SMTP_HOST'            => 'smtp.gmail.com',
    'MAIL_SMTP_PORT'            => 587,
    'MAIL_SMTP_SECURE'          => 'tls',
    'MAIL_SMTP_AUTH'            => true,
    'MAIL_SMTP_USER'            => 'server.smtp@gmail.com',
    'MAIL_SMTP_PASS'            => '*******'
);

PHPMailer的一部分

// Add a "Reply-to" address.
$mail->addReplyTo($form_email, $form_name);
// Set the From and FromName properties
$mail->setFrom($form_email, $form_name);
// Add a "To" address.
$mail->addAddress($config_mail['MAIL_FROM'], $config_mail['MAIL_NAME']);

屏幕截图 (在下面的说明中说明问题) gmail edit screenshot

问题解释 你可以在图像上看到from是不正确的,所以我不得不使用$ replyTo,但它对我来说似乎仍然是一个问题。也许它必须是这样的,因为它是使用SMTP从服务器发送的,但我仍然想知道它为什么会这样,是否可以改变它?

我相信这一行:

from: Sender Name <server.smtp@gmail.com> 

应该是这样的,而不是:

from: Sender Name <sender.mail@example.com>

我错了还是一定是这样?我试图深入解释我的问题,希望我会得到高质量的答案,因为我真的不明白!

2 个答案:

答案 0 :(得分:2)

Gmail强制发件人与经过身份验证的用户无论您尝试使用何种编程语言进行设置。这种行为是设计使然。

答案 1 :(得分:1)

试试这个:

//Create a new PHPMailer instance
$mail = new PHPMailer();
//Set who the message is to be sent from
$mail->setFrom('from@example.com', 'First Last');
//Set an alternative reply-to address
$mail->addReplyTo('replyto@example.com', 'First Last');
//Set who the message is to be sent to
$mail->addAddress('whoto@example.com', 'John Doe');
//Set the subject line
$mail->Subject = 'PHPMailer mail() test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
$mail->addAttachment('images/phpmailer_mini.png');

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}