PEAR:Mail Mime - 上传到托管网站后无法发送电子邮件 - GoDaddy
PEAR: Mail Mime - Can't send email after uploading to hosting site - GoDaddy
我一直在创建这个项目,系统接受注册,然后通过邮件将信息发送给所有者。我正在使用 PEAR: Mail Mime 来执行此操作。发送邮件实际上在我的本地计算机上有效,但是将此项目上传到托管站点 (GoDaddy) 后,它不再发送了。
我做了一个错误检查,看看是什么阻碍了邮件的发送,我收到了这条消息:
Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: Connection refused (code: -1, response: )]
我正在使用 GMail 帐户发送电子邮件,并使用此代码执行此操作:
/* INCLUDE PREREQUISITES IN ORDER TO SEND AN EMAIL */
include('../../application/third_party/Mail-1.3.0/Mail-1.3.0/Mail.php');
require_once '../../application/third_party/Mail_Mime-1.10.0/Mail_Mime-1.10.0/Mail/mime.php';
/* HEADER INFORMATION */
$from = '<***@gmail.com>';
$to = '<***@gmail.com>';
$subject = 'Someone registers';
$crlf = "\r\n";
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
// CREATING THE MIME MESSAGE
$mime = new Mail_mime($crlf);
$html = '
<html>
<body>
Message here
</body>
</html>';
// SETTING THE BODY OF THE EMAIL TO HTML
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);
// SENDER INFORMATION
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => '***@gmail.com',
'password' => '***'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
$errormessage = '<p>'.$mail->getMessage().'</p>'; // ERROR MESSAGE
$mail->getUserInfo();
}
是的,我开启了GMail发件人账户的Access for less secure apps。
是的,错误显示已打开。
ini_set('display_errors', 1);
error_reporting(E_ALL);
有没有我可能遗漏的解决方案?
在此找到有关外发邮件的答案 - Sending email through gmail SMTP on GoDaddy。
是因为主机提供商GoDaddy限制了GMail的SSL端口(465),以及其他端口如25和587。感谢这篇文章-Troubleshooting PHPMailer Problems - of GitHub 用于清除它。用户只能使用 GoDaddy 的邮件服务器。
但我仍然设法使用 GMail 发送电子邮件,方法是:
$smtp = Mail::factory('smtp');
/* SETTINGS WILL BE IN DEFAULT (E.G. HOST:LOCALHOST, PORT: 45) */
而不是
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => '***@gmail.com',
'password' => '***'
));
但收件人接收到的已发送电子邮件为 "spam" - 结果是收件人不会注意到来自系统的传入电子邮件(不是一个好的选择)。而且发件人的已发邮件里没有记录(意思是你"used"发邮件的邮箱,但不完全是)。
那么,我们又回到了 GoDaddy 的邮件服务器。首先,您必须通过检查由 GoDaddy 自己发布的 What is the name of my hosting account's relay server? 来确定您的主机帐户的中继服务器。在我的例子中,Linux (cPanel),我将使用 localhost
作为我的主机。
$smtp = Mail::factory('smtp', array(
'host' => 'localhost',
'auth' => true,
'username' => '***@***.com',
'password' => '***'
));
但是奇怪的是,仍然没有发送物品的记录。希望 GoDaddy 代表能看到这篇文章。
我一直在创建这个项目,系统接受注册,然后通过邮件将信息发送给所有者。我正在使用 PEAR: Mail Mime 来执行此操作。发送邮件实际上在我的本地计算机上有效,但是将此项目上传到托管站点 (GoDaddy) 后,它不再发送了。
我做了一个错误检查,看看是什么阻碍了邮件的发送,我收到了这条消息:
Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: Connection refused (code: -1, response: )]
我正在使用 GMail 帐户发送电子邮件,并使用此代码执行此操作:
/* INCLUDE PREREQUISITES IN ORDER TO SEND AN EMAIL */
include('../../application/third_party/Mail-1.3.0/Mail-1.3.0/Mail.php');
require_once '../../application/third_party/Mail_Mime-1.10.0/Mail_Mime-1.10.0/Mail/mime.php';
/* HEADER INFORMATION */
$from = '<***@gmail.com>';
$to = '<***@gmail.com>';
$subject = 'Someone registers';
$crlf = "\r\n";
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
// CREATING THE MIME MESSAGE
$mime = new Mail_mime($crlf);
$html = '
<html>
<body>
Message here
</body>
</html>';
// SETTING THE BODY OF THE EMAIL TO HTML
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);
// SENDER INFORMATION
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => '***@gmail.com',
'password' => '***'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
$errormessage = '<p>'.$mail->getMessage().'</p>'; // ERROR MESSAGE
$mail->getUserInfo();
}
是的,我开启了GMail发件人账户的Access for less secure apps。
是的,错误显示已打开。
ini_set('display_errors', 1);
error_reporting(E_ALL);
有没有我可能遗漏的解决方案?
在此找到有关外发邮件的答案 - Sending email through gmail SMTP on GoDaddy。
是因为主机提供商GoDaddy限制了GMail的SSL端口(465),以及其他端口如25和587。感谢这篇文章-Troubleshooting PHPMailer Problems - of GitHub 用于清除它。用户只能使用 GoDaddy 的邮件服务器。
但我仍然设法使用 GMail 发送电子邮件,方法是:
$smtp = Mail::factory('smtp');
/* SETTINGS WILL BE IN DEFAULT (E.G. HOST:LOCALHOST, PORT: 45) */
而不是
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => '***@gmail.com',
'password' => '***'
));
但收件人接收到的已发送电子邮件为 "spam" - 结果是收件人不会注意到来自系统的传入电子邮件(不是一个好的选择)。而且发件人的已发邮件里没有记录(意思是你"used"发邮件的邮箱,但不完全是)。
那么,我们又回到了 GoDaddy 的邮件服务器。首先,您必须通过检查由 GoDaddy 自己发布的 What is the name of my hosting account's relay server? 来确定您的主机帐户的中继服务器。在我的例子中,Linux (cPanel),我将使用 localhost
作为我的主机。
$smtp = Mail::factory('smtp', array(
'host' => 'localhost',
'auth' => true,
'username' => '***@***.com',
'password' => '***'
));
但是奇怪的是,仍然没有发送物品的记录。希望 GoDaddy 代表能看到这篇文章。