未通过 google smtp 发送的电子邮件

Posted

技术标签:

【中文标题】未通过 google smtp 发送的电子邮件【英文标题】:Emails not sent via google smtp 【发布时间】:2015-07-12 17:25:10 【问题描述】:

我正在使用以下 php 代码向预定义邮件发送带有附件的电子邮件。

<?php

require_once('class.phpmailer.php');

$mail             = new PHPMailer();
$body             = $_POST['message'];
$mail->IsSMTP();
$mail->SMTPAuth   = true;
$mail->Host       = "smtp.gmail.com";
$mail->Port       = 465;
$mail->Username   = "dimal.chandrasiri@gmail.com";
$mail->Password   = "****";
$mail->SMTPSecure = 'tls';
$mail->SetFrom('dimal.chandrasiri@gmail.com', 'Your name');
$mail->AddReplyTo("dimal.chandrasiri@gmail.com","Your name");
$mail->Subject    = "Abstract submission for" .$_POST['fname'];
$mail->AltBody    = $_POST['message'];

if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK)
    $mail->AddAttachment($_FILES['file']['tmp_name'],$_FILES['file']['name']);


$mail->Msghtml($body);
$address = 'dimal.chandrasiri@gmail.com';
$mail->AddAddress($address, $name);

if($mail->Send()) 
      echo 'done';
 else 
      echo 'error';


?>

密码和其他 smtp 详细信息正确,但我无法发送任何邮件。我在这里做错了什么?我使用下面的 html 表单来发布数据。

<form id="main-contact-form" class="abstract-form" name="contact-form" method="post" action="/script/submit.php">
<div class="row-fluid">
    <div class="span5">
        <label>First Name</label>
        <input type="text" name='fname' class="input-block-level" required="required" placeholder="Your First Name">
        <label>Last Name</label>
        <input type="text" name='lname' class="input-block-level" required="required" placeholder="Your Last Name">
        <label>Email Address</label>
        <input type="text" name='email' class="input-block-level" required="required" placeholder="Your email address">
        <label>File</label>
        <input type="file" name='file' class="input-block-level" required="required" placeholder="Your Abstract File">
    </div>
    <div class="span7">
        <label>Message</label>
        <textarea name="message" id="message" required="required" class="input-block-level" rows="8"></textarea>
    </div>
</div>
<button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button>
<p> </p>    
</form>

我在回显错误信息时收到以下错误。

The following From address failed: dimal.chandrasiri@gmail.com : Called Mail() without being connected

【问题讨论】:

这段代码之前有效吗? echo $mail-&gt;ErrorInfo 我从教程中获取代码进行测试! Send email using the GMail SMTP server from a PHP page 的可能重复项 您可以从浏览器使用此电子邮件登录吗?您是否使用其他电子邮件(谷歌或其他帐户)测试了此代码? 【参考方案1】:

Gmail 用户可以通过官方网站或使用第一方或第三方应用和服务来访问他们的帐户。第一方应用程序是例如 Google 的 android 官方 Gmail 应用程序,而 Thunderbird 和 Windows 8 的邮件客户端应用程序是第三方应用程序。

Google announced 早在 2014 年 4 月就表示,它将提高其服务的登录安全性,并影响任何向公司发送用户名和密码的应用程序。

该公司当时建议切换到 OAuth 2.0,但直到现在才强制执行。

如果您在 Google 的安全设置下打开新的 less secure 应用页面,您会注意到 Google 默认已禁用访问。

注意:只有在您未使用 Google Apps 或为帐户启用了双重身份验证时,您才会看到该页面。

您可以在此处拨动开关以再次启用安全性较低的应用程序,从而重新获得访问权限。

【讨论】:

我把它关掉并测试了!还是一样的问题! 您的意思是切换到启用还是禁用? 我禁用了这个功能,让我可以通过谷歌发送电子邮件! 对于不太安全的应用程序,您必须选择 Access ==> 启用第二个,这就是我的意思,然后再次测试 您是否要测试一个使用 Gmail 仅用于测试的 vbscript?

以上是关于未通过 google smtp 发送的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

通过Python中的smtp.gmail.com在GAE上发送电子邮件

通过未加密的连接发送电子邮件

通过 Outlook 的 smtp 服务器发送电子邮件

通过 Gmail SMTP 发送电子邮件时出错

需要Google OAuth 2.0架构建议通过Java邮件Api发送Smtp邮件

通过邮件 gem 发送 smtp 电子邮件会导致 554 5.7.0 Reject