마 젠토 2 : 프로그래밍 방식으로 이메일 보내기


24

Magento 2는 Amazon SES, Mandrill 등과 같은 타사 트랜잭션 이메일 전송 시스템과 기본적으로 통합되어 mail있습니까? 또는 기본 제공 이메일 기능이 여전히 PHP 기능을 기반으로 합니까? 아니면 이메일이 세 번째로 전송됩니까?

대답이 mail이면 SMTPPro for Magento 2와 같은 타사 확장 프로그램이 있습니까? 개발자가 표준 전자 메일 시스템을 교체 할 수 있습니까?

답변:


13

이메일을 보내는 것을 발견 할 때까지 '이메일', '메시지'등과 같은 문자열을 Magento 2 코드베이스에서 검색하기 시작했습니다. 에서 sendPaymentFailedEmail ()을 우연히 발견했습니다 vendor/magento/module-checkout/Helper/Data.php. 이것은 많은 변수를 설정하지만 결국 'transportBuilder'를 통해 생성되는 전송 객체에 연결합니다. 이 transportBuilder는의 인스턴스입니다 \Magento\Framework\Mail\Template\TransportBuilder.

해당 파일 $transport에는의 인스턴스 인 변수가 존재합니다 \Magento\Framework\Mail\TransportInterface. 인터페이스가 있기 때문에이라는 일반 클래스도 있습니다 \Magento\Framework\Mail\Transport. 파일을 열면이 파일 vendor/magento/framework/Mail/Transport.php이 Zend_Mail_Transport_Sendmail로 확장됩니다.

전송 클래스 확장 \ Zend_Mail_Transport_Sendmail은 \ Magento \ Framework \ Mail \ TransportInterface를 구현합니다.

이것은 당신이 찾고있는 것입니다. DI를 사용하면이 전송을 Mandrill 또는 Amazon SES와 같은 Zend_Mail 대신 다른 이메일 프레임 워크로 대체 할 수 있습니다.

send()메소드 가 포함되어 있기 때문에 메소드 를 포함해야합니다 sendMessage().

public function sendMessage()
{
    try {
        parent::send($this->_message);
    } catch (\Exception $e) {
        throw new \Magento\Framework\Exception\MailException(new \Magento\Framework\Phrase($e->getMessage()), $e);
    }
}

12

Magento 2 TransportBuilder는 이메일 템플릿을 사용하여 이메일 본문을 작성합니다. 일반 텍스트를 보내는 가장 간단한 방법-사용 Zend_Mail(Magento 2 자체에서 사용) :

$email = new \Zend_Mail();
$email->setSubject("Feedback email");
$email->setBodyText($body);
$email->setFrom($from, $nameFrom);
$email->addTo($to, $nameTo);
$email->send();

3
html 형식으로 본문을 보내려면 다음을 사용할 수 있습니다.$email->setBodyHtml($body)
Anish Karim

그러나 구글과 같은 것을 통해 smtp를 사용하는 경우이 스레드를 따라
가십시오.

나는 젠토에서이 작업을 시도했지만 오류를 치명적인 오류가 발생했습니다 : 치명적인 오류 : catch되지 않은 오류 : 클래스 'Zend_Mail가'/srv/public_html/pub/test.php에서 찾을 수 없습니다
Nagaraju K

@NagarajuK, 당신은 당신에 작곡가의 autloader을 포함 않았다 /srv/public_html/pub/test.php?
Alex Gusev

아니 @AlexGusev 내 test.php 파일에 작곡가의 autloader를 추가하는 방법을 안내해 줄 수 있습니까?
나가라 주 K

8

mail()구식이며 3을 지원하지 않는 PHP에 대한 가정이 종종 있습니다. 파티 서비스.
모든 좋은 3 번째로, 실제로 잘못되었습니다. 파티 서비스는 SMTP 인터페이스를 지원하며 mail(), 역시 지원합니다.

Amazon SES는 SMTP를 지원합니다.

SMTP를 통한 전송 mail()/programming//a/14457410/716029에 설명되어 있습니다.


1
유용한 정보는 +1이지만, 여전히 Magento가 HTTP 서비스를 통해 다양한 이메일을 지원하는 추상화에 관심이 있습니다.
Alan Storm

불행히도 Zend_Mail 이외의 특정 구현은 없습니다.
피터 Jaap Blaakmeer

-1

Magento 2 사용자 지정 전자 메일 보내기에 \ Magento \ Framework \ Mail \ Template \ TransportBuilder 클래스를 사용합니다.

트랜잭션 메일 템플리트를 정의하기 위해 간단한 모듈을 작성하고 email_tempaltes.xml 파일을 설정해야합니다.

Adminhtml 또는 Frontend Scope 영역에서 메일을 보낼 수 있습니다.

모듈을 사용하여 Magento 2에서 사용자 지정 메일을 보내기위한 단계별 가이드 링크를 공유했습니다.

Magento 2 모듈에서 사용자 지정 메일 보내기

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.