带有 yandex 邮件的 phpmailer 类
Posted
技术标签:
【中文标题】带有 yandex 邮件的 phpmailer 类【英文标题】:phpmailer class with yandex mail 【发布时间】:2014-09-18 14:19:29 【问题描述】:我正在为我的网站表单使用 phpmailer 类。但是 YANDEX MAIL 用 phpmailer 发送邮件不起作用。 但是两天前它起作用了。我尝试了所有组合。
例如:“ssl”、“tls”、“端口更改”,但它不起作用。示例我的代码:
$mail->IsSMTP();
$mail->SMTPSecure = "ssl"; // or "tls" (I was try)
$mail->Host = "smtp.yandex.com.tr"; or "ssl://smtp.yandex.com.tr"(I was try)
$mail->Port =587; or "465,25,587"(I was try)
$mail->SMTPAuth = true; or "false"
$mail->Username = "email@mywebsite.com";
$mail->Password = "mypassword";
$mail->From = "email@mywebsite.com";
$mail->FromName =$email;
$mail->AddAddress("goto@mywebsite.com");
谢谢大家的回答
【问题讨论】:
你没有说它是怎么不工作的——你看到了什么错误信息或症状?有效的协议/端口组合为ssl
/465
(已弃用)、tls
/587
,偶尔还有tls
/25
。 Telnet 到他们服务器上的 587 端口当然可以,所以我会选择tls
/587
。 Port
应该是一个整数值。您发布的代码实际上不会发送任何内容,因此我假设您还有更多尚未发布的代码。
【参考方案1】:
我也在为此苦苦挣扎。以下是经过验证的工作设置。但在尝试这些设置之前,您还需要登录 Yandex 并通过 https://mail.yandex.com 接受 eula 或其他内容。
$mail->Host = 'smtp.yandex.com';
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->SMTPOptions = array (
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true)
);
【讨论】:
【参考方案2】:就我而言,我公司的防火墙阻止了 smtp。我连接了我的个人热点然后它工作了。
【讨论】:
【参考方案3】:我也遇到过同样的问题。我找到了可行的解决方案:
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.yandex.ru';
$mail->Port = 25;
$mail->Username = 'user@yandex.ru';
$mail->Password = 'PasswordGoesHere';
$mail->setFrom('user@yandex.ru', 'Username');
$mail->addAddress($mailToAddr);
$mail->CharSet = "Windows-1251";
$mail->ishtml(true);
$mail->Subject = $subject;
$mail->Body = nl2br($message);
$mail->AltBody = $message;
if (!$mail->send())
echo $mail->ErrorInfo;
else
// email sent
【讨论】:
【参考方案4】:至于现在(2021 年 6 月)要使用 PHPMailer 和 Yandex,您应该执行以下操作:
首先,准备您的 Yandex 帐户。他们有很清楚的instruction,但用的是俄语。简而言之:
在“邮件 → 所有设置 → 电子邮件客户端”页面选中“使用邮件客户端检索您的 Yandex 邮件 - 通过 IMAP 从 imap.yandex.com 服务器”和“IMAP 授权方法 - 应用程序密码和 OAuth 令牌”。
在“帐户管理”页面的“密码和授权”部分选择“启用应用密码”并创建新的应用密码。
然后您可以使用启用了SSL
加密的 SMTP 端点 smtp.yandex.ru:465
,应用程序密码如下:
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.yandex.ru';
$mail->Port = 465;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // public const ENCRYPTION_SMTPS = 'ssl';
$mail->Username = 'EMAIL@yandex.ru';
$mail->Password = 'PASSWORD';
$mail->setFrom('FROM_EMAIL@yandex.ru', 'FROM');
$mail->addAddress('TO_EMAIL@yandex.ru');
$mail->Subject = 'SUBJECT';
$mail->Body = 'BODY';
$mail->send();
您可以通过在“邮件→所有设置→电子邮件客户端”页面中勾选“IMAP授权方法-门户密码”来避免创建应用程序密码并使用您的帐户密码,但服务不建议这样做。
【讨论】:
以上是关于带有 yandex 邮件的 phpmailer 类的主要内容,如果未能解决你的问题,请参考以下文章
使用phpmailer通过带有图像的html文件发送电子邮件