【发布时间】:2016-08-12 15:17:25
【问题描述】:
<?php
require ("PHPMailer-master/PHPMailerAutoload.php");
$mail = new PHPMailer;
if(isset($_POST['submit']))
{
$email_query = "select email1,email2 from tbl_contacts where id = '1'";
$query_result = mysql_query($email_query);
$value = mysql_fetch_array($query_result);
$primary_email = $value['email1'];
$CC = $value['email2'];
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$mail->IsSendmail(); // Set mailer to use SMTP
$mail->Host = "smtp.google.com"; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $email; // SMTP username
//$mail->Password = 'password'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom($email, $name);
//$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient
$mail->addAddress($primary_email); // Name is optional
$mail->addReplyTo($email, '');
$mail->addCC($CC);
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = $message;
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
redirect('/contact.php?message=Your+Message+Has+Been+Sent!', 'location');
}
}
?>
我正在使用 gmail 的 smtp,如果我使用 gmail 帐户发送电子邮件,它可以正常工作,但是当我使用 yahoo 帐户发送电子邮件时,它会显示一条成功消息,但该消息没有送达。是否可以使用 gmail 的 smtp 从 yahoo 的电子邮件发送电子邮件?如果是,我该怎么做?如果没有,我该如何解决这个问题?
【问题讨论】:
-
不可能。电子邮件标题可由用户编辑。您基本上可以从您喜欢的任何电子邮件地址发送电子邮件。从技术上讲,您甚至可以从根本没有地址发送电子邮件。 GMail 不希望他们的用户滥用此功能,因此他们要求您提供您的 GMail 凭据。这样他们就可以确保您只能从您的 GMail 地址发送邮件。您需要自己的邮件服务器来规避这个问题,或者检查 Yahoo 是否有自己的 SMTP 设置并使用这些设置。