PHP Mailer:从 gmail 向 yahoo 发送邮件,无法识别代码
Posted
技术标签:
【中文标题】PHP Mailer:从 gmail 向 yahoo 发送邮件,无法识别代码【英文标题】:PHP Mailer: sending mails from gmail to yahoo, not recognized code 【发布时间】:2022-01-05 14:30:19 【问题描述】:所以我想从 gmail 地址向 yahoo 地址发送电子邮件。它工作正常,但是当我打开 yahoo 邮件时,它无法识别我从 gmail 地址发送的邮件。例如,我有一个登录确认按钮,当您收到邮件时必须按下该按钮。当我发送到 gmail 地址时,您可以按下按钮,但是当涉及到 yahoo 地址时.. 不 :(。任何想法为什么?以及如何解决这个问题?
$sentTo = $email;
$message = "Confirm registration";
$mail = new phpMailer;
//$mail->SMTPDebug = 2;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup server
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'myusername'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mail->Port = 587; //Set the SMTP port number - 587 for authenticated TLS
$mail->setFrom('myusername@gmail.com', 'WEBSITE'); //Set who the message is to be sent from
$mail->addAddress($sentTo); // Add a recipient
$mail->WordWrap = 50; // Set word wrap to 50 characters
$mail->ishtml(true); // Set email format to HTML
$mail->Subject = "Travel Smart - Confirm Registration - ";
$mail->Body = "<div style='padding: 10px; border-radius: 10px; height: auto; background-image:linear-gradient(to right, rgba(287, 202, 192), rgba(142, 65, 98));opacity:0.8;'><h2 style='font-family:cursive'> WELCOME! </h2> <br> <a href='localhost/log.php?unique_id=$ran_id'><button style='color:white; background:black; pointer: cursor; padding: 10px; border-radius: 20px;'>". $message."</button></a><br></div>";
$mail->AltBody = $message;
if(!$mail->send())
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
【问题讨论】:
您是否尝试过移除 a-tag 内的按钮并改为设置 a-tag 的样式?不同的电子邮件客户端可以以不同的方式解析 HTML 电子邮件,因此最好尽可能降低复杂性。您还应该在链接中的主机名(如http://localhost
)之前包含架构(http://
或https://
)。如果没有架构,浏览器将假定您正在尝试从您所在的页面访问相对 URL(某些网络邮件客户端可能会阻止)
另外,本地主机的链接只对你有用,对其他人无效。
你不应该用<a>
包裹<button>
。使用w3.org 验证结果:元素button
不得作为a
元素的后代出现。
仍然无法正常工作... 雅虎根本无法识别 html
@deniz_info 如果您确实删除了位于a
中的button
,它会起作用。刚刚测试过。
【参考方案1】:
您的元素不正确。使用w3.org 结果验证您的 HTML:
元素
button
不得作为a
元素的后代出现。
您的链接不正确。它是href="localhost/login.php?..."
。您应该将架构(http://
或https://
)包含为@M。上面评论了埃里克森。
这是对正文消息的修复。
$mail->Body = "<div style='padding: 10px; border-radius: 10px; height: auto; background-image:linear-gradient(to right, rgba(287, 202, 192), rgba(142, 65, 98));opacity:0.8;'><h2 style='font-family:cursive'> WELCOME! </h2> <br> <a href='https://localhost/log.php?unique_id=$ran_id' style='color:white; background:black; pointer: cursor; padding: 10px; border-radius: 20px;'>Hello world</a><br></div>";
不要忘记将 Hello world 替换为您的 $message
。以上代码用于测试。
截图:
黑色按钮的链接可以点击到https://localhost/...
。
【讨论】:
为什么背景不可见? 你第一次没有提到背景。我几乎使用了你所有的 HTML,除了重新格式化a
以通过删除其中的 button
使其有效。我没有修改你的css背景。如果这不起作用,则意味着它也不应该在您的代码中起作用。正如 M. Eriksson 对您的问题所评论的那样,不同的电子邮件客户端可以以不同的方式解析 HTML 电子邮件。这包含在 CSS 中。
检查限制here结果:15个已知邮件客户端不支持background-image样式,应避免实现。关于background linear-gradient on Yahoo的答案。
以上是关于PHP Mailer:从 gmail 向 yahoo 发送邮件,无法识别代码的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误
我向其发送邮件的每个用户都会重复 PHP Mailer 邮件
使用 php、gmail 和 swiftmailer 发送电子邮件会导致与 SSL 相关的错误