Отправка с использованием Email :: Simple с To / From в тексте вместо заголовков - PullRequest
0 голосов
/ 04 февраля 2019

В настоящее время мы используем печать для отправки html-почты по каналу sendmail, что прекрасно работает.

$fh->open( q{|sendmail -f<fromaddress> .......} );

Это происходит из шаблона, который содержит текст, такой как ...

From: <Fromaddress>
Reply-to: <replyaddress>
Subject: etc
Mine-Version: 1.o
Content-Type: text/html

<!DOCTYPE html...
<html...
rest of body

Я сейчас пытаюсь использовать Email :: Simple с тем же текстом

my $email = Email::simple->create(
    header => $header,
    body => $body
);

sendmail( $email, { transport => $transport });

Мои заголовки похожи на

[ To => <toaddress>, From => <fromaddress>, 'Content-Type' => 'text/html' ]

Это все отправляет нормально, за исключением того, что включает в себя также 'From: .. To :: Subject .. 'как часть html, которая также будет отображаться, тогда как sendmail использует это для использования.

Я мог бы использовать регулярное выражение для удаления содержимого заголовка, включенного в текст(так как он уже сгенерирован, но это кажется подверженным риску и неуклюжим), но мне интересно, есть ли Email :: Simple способ отменить это, или использовать только html вместо конкретных заголовков From / To / Subject, предоставленных дляEmail :: Simple?

Я посмотрел здесь , но не вижу никакой ссылки на это.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

На самом деле ответ проще, чем я думал ...

Если вы просто используете

my $email = Email::Simple->new( $text );
sendmail( $email, { transport => $transport });

Он будет использовать заголовки из текста / тела, а не включать их вmain body.

Если вы используете

my $email = Email::Simple->create( $text );
sendmail( $email, { transport => $transport });

Кажется, что нужны отдельные заголовки, и отправляет заголовки в тексте как часть отправленных основных данных / html.

0 голосов
/ 04 февраля 2019

Я предполагаю, что ваша переменная $body содержит текст из одного из ваших файлов шаблонов.И поскольку эти шаблоны содержат заголовки, они в конечном итоге будут дублироваться в теле ваших сообщений электронной почты.

Лучший способ - отредактировать ваши шаблоны, удалив разделы заголовка.

Но если выпо какой-то причине этого сделать нельзя, вы можете предварительно обработать $body перед передачей его методу create().Примерно так, возможно:

(undef, $body) = split /\n\n/, $body, 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...