Отправка электронной почты с помощью Cakephp 3

Я использую эту библиотеку для отправки почты

https://github.com/PHPMailer/PHPMailer

Но я не получаю сообщение об отправке электронной почты

Недействительный адрес: (От): XXX Массив ([ошибка] => 1 [сообщение] => Ошибка почтовой программы: неверный адрес: (От): XXX)

Что я сделал: отключил двухэтапную аутентификацию в Gmail

И включен параметр Разрешить менее безопасные приложения

PagesController.php

<?php
namespace App\Controller;

class PagesController extends AppController
 {
public $components = array("Email");

public function index()
{
        $to = '[email protected]';
    $subject = 'Hi buddy, i got a message for you.';
    $message = 'Nothing much. Just test out my Email Component using PHPMailer.';

    try {
        $mail = $this->Email->send_mail($to, $subject, $message);
        print_r($mail);
    } catch (Exception $e) {
        echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
    }
    exit;   

}
}

EmailComponent.php

<?php
namespace App\Controller\Component;

use Cake\Controller\Component;
use Cake\Core\App;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require ROOT. '/vendor/phpmailer/phpmailer/src/Exception.php';
require ROOT. '/vendor/phpmailer/phpmailer/src/PHPMailer.php';
require ROOT. '/vendor/phpmailer/phpmailer/src/SMTP.php';

class EmailComponent extends Component {

public function send_mail($to, $subject, $message)
{
    // date_default_timezone_set('Asia/Calcutta');

    $sender = "XXX"; // this will be overwritten by GMail

    $header = "X-Mailer: PHP/".phpversion() . "Return-Path: $sender";

    $mail = new PHPMailer();

    $mail->SMTPDebug  = 2; // turn it off in production
    $mail->IsSMTP();
    $mail->Host = "smtp.gmail.com"; 
    $mail->SMTPAuth = true;
    $mail->Username   = "XXX";  
    $mail->Password   = "XXX";
    $mail->SMTPSecure = "tls"; // ssl and tls
    $mail->Port = 587; // 465 and 587

    $mail->SMTPOptions = array (
        'tls' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        ),
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    );

    $mail->From = $sender;
    $mail->FromName = "From Me";

    $mail->AddAddress($to);

    $mail->IsHTML(true);
    $mail->CreateHeader($header);

    $mail->Subject = $subject;
    $mail->Body    = nl2br($message);
    $mail->AltBody = nl2br($message);

    // return an array with two keys: error & message
    if (!$mail->Send()) {
        return array('error' => true, 'message' => 'Mailer Error: ' . $mail->ErrorInfo);
    } else {
        return array('error' => false, 'message' =>  "Message sent!");
    }
}
}
Отправка электронной почты с помощью Python менее чем за 1 минуту
Отправка электронной почты с помощью Python менее чем за 1 минуту
Отправка электронной почты с помощью Python - это удобный способ автоматизировать процесс отправки электронных писем. Это может быть полезно для...
0
0
843
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправлено мне пришлось заменить

это три строки в EmailComponent

$sender = "[email protected]";
$mail->Username   = "[email protected]";
$mail->Password   = "GMAIL_PASSWORD";

Другие вопросы по теме