как отправить электронную почту через 365 с помощью PhpMailer на веб-хостинге godaddy - PullRequest
0 голосов
/ 20 сентября 2018

Я собираюсь отправить письмо через 365, используя phpmailer lib.Это моя конфигурация

MAIL_DRIVER=smtp
MAIL_HOST=smtp.office365.com
MAIL_PORT=587
MAIL_USERNAME=support@xxxxx.com
MAIL_PASSWORD=XXXXXX
MAIL_ENCRYPTION=STARTTLS

Следующий код предназначен для отправки электронной почты

 public function __construct()
    {
        date_default_timezone_set('America/Virgin');

        $this->mail = new \PHPMailer;

        $this->mail->isSMTP();         


        $this->mail->CharSet = 'UTF-8';
        //Ask for HTML-friendly debug output
        $this->mail->Debugoutput = 'html';
        //Set the hostname of the mail server
        $this->mail->Host = getenv("MAIL_HOST"); //'ssl://smtp.gmail.com';            
        $this->mail->Port = getenv("MAIL_PORT");
        //Set the encryption system to use - ssl (deprecated) or tls
        // $this->mail->SMTPSecure = 'tls';
        //Whether to use SMTP authentication
        $this->mail->SMTPAuth = true;
        $this->mail->Username = getenv("MAIL_USERNAME"); 
        $this->mail->Password = getenv("MAIL_PASSWORD");
        $this->mail->SMTPSecure = getenv("MAIL_ENCRYPTION");     
        $this->setSender(
            $this->sender_email,
            $this->sender_password,
            $this->sender_display_name,
            $this->sender_display_email,
            $this->sender_reply_to_name,
            $this->sender_reply_to_email
        );
    }

public function sendEmail($to_email, $to_name, $subject, $message, $template_name = '')
    {
        //Set who the message is to be sent to
        $this->mail->addAddress($this->trim_input($to_email), $this->trim_input($to_name));
        //Set the subject line
        $this->mail->Subject = $subject;
        //Read an HTML message body from an external file, convert referenced images to embedded,
        //convert HTML into a basic plain-text alternative body
        $this->mail->msgHTML($template_name);
        //Replace the plain text body with one created manually
        $this->mail->AltBody = $message;
        //send the message, check for errors
        if (!$this->mail->send()) {
            return false;
        // echo "Mailer Error: " . $this->mail->ErrorInfo;
        } else {
            return true;
        }
    }

Я пытался отправить электронную почту на локальный сервер и сервер цифрового океана. В этом случае у меня правильноотправлено и получено электронное письмо,

, но на сервере Godaddy есть ошибка

Ошибка почтовой программы: сбой подключения SMTP ().https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting.

Я пытался изменить драйвер электронной почты и другой драйвер, который ранее упоминался через эту платформу Настройка PHPMailer с Office365 SMTP

Как это исправить?Спасибо за ваше продвижение.

1 Ответ

0 голосов
/ 21 сентября 2018

Спасибо, что поделились хорошим описанием проблемы, с которой вы столкнулись.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.office365.com
MAIL_PORT=587
MAIL_USERNAME=support@xxxxx.com
MAIL_PASSWORD=XXXXXX
MAIL_ENCRYPTION=STARTTLS

Вы используете порт 587, который на самом деле является проблемой.Системные администраторы, которые используют GoDaddy в качестве своего хостинг-провайдера, могут испытывать проблемы с отправкой почты через порт 587 или любые другие порты smtp, такие как 25, 2525, 467. Это связано с тем, что GoDaddy требует, чтобы их серверы отправляли через собственную SMTP-ретрансляцию вместо какой-либо третьей стороны.Это действительно разочаровывающая ситуация, но такова политика Godaddy.Если вы используете собственный ретранслятор Godaddy, он будет работать.

Короче говоря, GoDaddy не нравится позволять своим клиентам использовать чужие SMTP-серверы, поэтому, если вы хотите по-прежнему использовать SMTP, переключитесь на другой хостинг.провайдер или если вы хотите остаться на Godaddy, тогда используйте отправку электронной почты на основе API вместо SMTP.

В случае подключения на основе API вы можете избавиться от этой проблемы с портами и при этом отправлять электронные письма с большей скоростью.Вместо PHPMailer, который работает с портом SMTP, попробуйте использовать библиотеку на основе API, например, Pepipost.Вот библиотека GIT: https://github.com/pepipost/pepipost-sdk-php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...