因此,我制作了一个应在用户执行操作时发送电子邮件的应用程序。 在我的本地服务器上(沼泽)。发送这些电子邮件不是问题。
我从bigrock购买了共享的Linux托管(印度服务器)。
最初,我在托管主机上测试了邮件发送功能。 也就是说,电子邮件ID的往返地址均为xyz@mydomain.com。 这项工作没有任何问题。
但是后来我尝试使用其他邮件服务。而且我还是收到错误“无法验证”(在gmail上,我打开的安全性较低的应用程序)。
在yahoo和我的公司电子邮件中,我收到“ SMTP-> Connect()错误”。
我尝试禁用$ email-> IsSMTP(); 如果发送到xyz@mydomain.com,这将起作用 但是如果发送到任何其他域则会出错。错误:无法实例化邮件功能。
我一直在努力解决此错误。我已经在这里和github上阅读了数百篇问答。
下面是我的代码
function my_SendEmail($quote,$message,$params,$details)
{
$return=array(0,"Email Sent");
// Connection Settings
$settings=$params;
//print_r($settings);
$from=$details->from;
$mailer=$details->mailer;
$subject=$details->subject;
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 4; // Enable verbose debug output
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = gethostbyname($settings->host); // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $settings->login; // SMTP username
$mail->Password = $settings->password; // SMTP password
$mail->SMTPSecure = $settings->security; // Enable TSL encryption, `ssl` also accepted
$mail->Port = $settings->port; // TCP port to connect to
$mail->SMTPOptions = array( 'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
//From
$mail->setFrom($from, $mailer);
//Recipients
$mail->addAddress($details->to,$details->recipientName); // Add a recipient // Name is optional
$mail->addReplyTo($from, $mailer);
foreach($quote->cc as $cc)
{
$mail->addCC($cc);
}
//Attachments
foreach($quote->attachments as $file)
{
$mail->addAttachment($file); // Add attachments // Optional name
}
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = 'Non-HTML Mail Clients Not Supported, Please View This email in a browser or get a HTML friendly Email Client.';
$mail->send();
}
catch (Exception $e)
{
$return=array(1,'Error: '.$mail->ErrorInfo);
}
return $return;
}
启用SMPT时出错。
2019-02-18 08:37:57 Connection: opening to ssl://103.20.215.161:465, timeout=300, options=array ( 'ssl' => array ( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ),)<br>
2019-02-18 08:39:00 Connection failed. Error #2: stream_socket_client(): unable to connect to ssl://103.20.215.161:465 (Connection timed out) [/home/justq3zt/public_html/PHPMailer/src/SMTP.php line 325]<br>
2019-02-18 08:39:00 SMTP ERROR: Failed to connect to server: Connection timed out (110)<br>
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting<br>
[1,"Error: SMTP connect() failed. https:\/\/github.com\/PHPMailer\/PHPMailer\/wiki\/Troubleshooting"]
我已经检查了所有提供的参数,它们是正确的。
我需要帮助。这是阻止我交付该项目的最后一件事。发送邮件是此应用的主要功能。
PS:我检查了bigrock上的php扩展名。那里没有openssl选项。可能有问题吗? 更新:使用
对此进行了检查<?php echo (extension_loaded('openssl')?'SSL loaded':'SSL not loaded')."\n"; ?>
它说“ SSL已加载”。所以我想扩展名已加载。