如何为 swift 邮件程序 php 传递多个 headers
How to pass multiple headers for swift mailer php
我正在使用 php 在 outlook 中创建会议,我发现了几个示例并尝试实施及其工作,但它正在使用 php mail() method
,在 php 邮件方法中我知道如何传递 headers 但我要实现的项目正在使用 swift 邮件程序,我不知道如何在 swift 邮件程序中定义这些 header ,以下是使用 php mail()
的工作示例
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "ABCD EFGH";
$domain = 'mydomain.com';
//Create Email Headers
$mime_boundary = "----Meeting Booking----".MD5(TIME());
$headers = "From: ".$from_name." <".$from_address.">\n";
$headers .= "Reply-To: ".$from_name." <".$from_address.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";
$headers .= "Content-class: urn:content-classes:calendarmessage\n";
//Create Email Body (HTML)
$message = "--$mime_boundary\r\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$message .= "--$mime_boundary\r\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" .
'VERSION:2.0' . "\r\n" .
'METHOD:REQUEST' . "\r\n" .
'BEGIN:VTIMEZONE' . "\r\n" .
'TZID:Eastern Time' . "\r\n" .
'BEGIN:STANDARD' . "\r\n" .
'DTSTART:20091101T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" .
'TZOFFSETFROM:-0400' . "\r\n" .
'TZOFFSETTO:-0500' . "\r\n" .
'TZNAME:EST' . "\r\n" .
'END:STANDARD' . "\r\n" .
'BEGIN:DAYLIGHT' . "\r\n" .
'DTSTART:20090301T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" .
'TZOFFSETFROM:-0500' . "\r\n" .
'TZOFFSETTO:-0400' . "\r\n" .
'TZNAME:EDST' . "\r\n" .
'END:DAYLIGHT' . "\r\n" .
'END:VTIMEZONE' . "\r\n" .
'BEGIN:VEVENT' . "\r\n" .
'ORGANIZER;CN="'.$from_name.'":MAILTO:'.$from_address. "\r\n" .
'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" .
'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" .
'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" .
'DTSTAMP:'.date("Ymd\TGis"). "\r\n" .
'DTSTART:'.$date."T".$startTime."00Z\r\n" .
'DTEND:'.$date."T".$endTime."00Z\r\n" .
'TRANSP:OPAQUE'. "\r\n" .
'SEQUENCE:1'. "\r\n" .
'SUMMARY:' . $subject . "\r\n" .
'LOCATION:' . $location . "\r\n" .
'CLASS:PUBLIC'. "\r\n" .
'PRIORITY:5'. "\r\n" .
'BEGIN:VALARM' . "\r\n" .
'TRIGGER:-PT15M' . "\r\n" .
'ACTION:DISPLAY' . "\r\n" .
'DESCRIPTION:Reminder' . "\r\n" .
'END:VALARM' . "\r\n" .
'END:VEVENT'. "\r\n" .
'END:VCALENDAR'. "\r\n";
$message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST'."\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;
$mailsent = mail($to_address, $subject, $message, $headers);
if($mailsent)
{
echo 'Meeting email sent';
}
else
{
echo 'Problem in sending email';
}
但我想在 swift 邮件程序中使用这个我不知道如何为 swift 邮件程序创建 headers 以及如何在 swift 中撰写电子邮件时通过谁能帮忙
我要这个
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "abcfer ";
$domain = 'mydomain.com';
//Create Email Headers
$mime_boundary = "----Meeting Booking----".MD5(TIME());
$headers = "From: ".$from_name." <".$from_address.">\n";
$headers .= "Reply-To: ".$from_name." <".$from_address.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";
$headers .= "Content-class: urn:content-classes:calendarmessage\n";
//Create Email Body (HTML)
$message = "--$mime_boundary\r\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$message .= "--$mime_boundary\r\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" .
'VERSION:2.0' . "\r\n" .
'METHOD:REQUEST' . "\r\n" .
'BEGIN:VTIMEZONE' . "\r\n" .
'TZID:Eastern Time' . "\r\n" .
'BEGIN:STANDARD' . "\r\n" .
'DTSTART:20091101T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" .
'TZOFFSETFROM:-0400' . "\r\n" .
'TZOFFSETTO:-0500' . "\r\n" .
'TZNAME:EST' . "\r\n" .
'END:STANDARD' . "\r\n" .
'BEGIN:DAYLIGHT' . "\r\n" .
'DTSTART:20090301T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" .
'TZOFFSETFROM:-0500' . "\r\n" .
'TZOFFSETTO:-0400' . "\r\n" .
'TZNAME:EDST' . "\r\n" .
'END:DAYLIGHT' . "\r\n" .
'END:VTIMEZONE' . "\r\n" .
'BEGIN:VEVENT' . "\r\n" .
'ORGANIZER;CN="'.$from_name.'":MAILTO:'.$from_address. "\r\n" .
'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" .
'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" .
'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" .
'DTSTAMP:'.date("Ymd\TGis"). "\r\n" .
'DTSTART:'.$date."T".$startTime."00Z\r\n" .
'DTEND:'.$date."T".$endTime."00Z\r\n" .
'TRANSP:OPAQUE'. "\r\n" .
'SEQUENCE:1'. "\r\n" .
'SUMMARY:' . $subject . "\r\n" .
'LOCATION:' . $location . "\r\n" .
'CLASS:PUBLIC'. "\r\n" .
'PRIORITY:5'. "\r\n" .
'BEGIN:VALARM' . "\r\n" .
'TRIGGER:-PT15M' . "\r\n" .
'ACTION:DISPLAY' . "\r\n" .
'DESCRIPTION:Reminder' . "\r\n" .
'END:VALARM' . "\r\n" .
'END:VEVENT'. "\r\n" .
'END:VCALENDAR'. "\r\n";
$message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST'."\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;
$message=Yii::$app->mailer->compose()
->setFrom($from_address)
->setTo($to_address)
->setSubject('This is subject') // ???? ??????
->addTextHeader($headers)
->setHtmlBody($message)
->send();
var_dump($message);
您正在使用 swiftmailer 以避免需要自己设置 headers。您可以像这样用 headers 发送您需要的邮件:
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "acfr ffs";
$domain = 'my.com';
/**
* @var \yii\swiftmailer\Message $mail
*/
$mail=Yii::$app->mailer->compose()
->setFrom([$from_address => $from_name])
->setReplyTo([$from_address => $from_name])
->setSubject($subject)
->setTo([$to_address => $to_name]);
$mail->addHeader('Content-class', 'urn:content-classes:calendarmessage');
//Create Email Body (HTML)
$message = "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
... skipped the body for better readability ...
'END:VCALENDAR'. "\r\n";
$swiftMail = $mail->getSwiftMessage();
$swiftMail->setContentType('multipart/alternative');
$swiftMail->addPart($message, 'text/html');
$swiftMail->addPart(
$ical,
'text/calendar;name="meeting.ics";method=REQUEST',
null
);
$mail->send();
如果您不需要这个特定的 headers 并且您的目标只是发送日历事件,您可以使它更简单
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "cfrt hjd";
$domain = 'my.com';
$mail=Yii::$app->mailer->compose()
->setFrom([$from_address => $from_name])
->setReplyTo([$from_address => $from_name])
->setSubject($subject)
->setTo([$to_address => $to_name]);
//Create Email Body (HTML)
$message = "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
... skipped the body for better readability ...
'END:VCALENDAR'. "\r\n";
$mail->setHtmlBody($message);
$mail->attachContent(
$ical,
[
'contentType' => 'text/calendar;name="meeting.ics";method=REQUEST'
]
);
$mail->send();
我正在使用 php 在 outlook 中创建会议,我发现了几个示例并尝试实施及其工作,但它正在使用 php mail() method
,在 php 邮件方法中我知道如何传递 headers 但我要实现的项目正在使用 swift 邮件程序,我不知道如何在 swift 邮件程序中定义这些 header ,以下是使用 php mail()
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "ABCD EFGH";
$domain = 'mydomain.com';
//Create Email Headers
$mime_boundary = "----Meeting Booking----".MD5(TIME());
$headers = "From: ".$from_name." <".$from_address.">\n";
$headers .= "Reply-To: ".$from_name." <".$from_address.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";
$headers .= "Content-class: urn:content-classes:calendarmessage\n";
//Create Email Body (HTML)
$message = "--$mime_boundary\r\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$message .= "--$mime_boundary\r\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" .
'VERSION:2.0' . "\r\n" .
'METHOD:REQUEST' . "\r\n" .
'BEGIN:VTIMEZONE' . "\r\n" .
'TZID:Eastern Time' . "\r\n" .
'BEGIN:STANDARD' . "\r\n" .
'DTSTART:20091101T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" .
'TZOFFSETFROM:-0400' . "\r\n" .
'TZOFFSETTO:-0500' . "\r\n" .
'TZNAME:EST' . "\r\n" .
'END:STANDARD' . "\r\n" .
'BEGIN:DAYLIGHT' . "\r\n" .
'DTSTART:20090301T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" .
'TZOFFSETFROM:-0500' . "\r\n" .
'TZOFFSETTO:-0400' . "\r\n" .
'TZNAME:EDST' . "\r\n" .
'END:DAYLIGHT' . "\r\n" .
'END:VTIMEZONE' . "\r\n" .
'BEGIN:VEVENT' . "\r\n" .
'ORGANIZER;CN="'.$from_name.'":MAILTO:'.$from_address. "\r\n" .
'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" .
'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" .
'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" .
'DTSTAMP:'.date("Ymd\TGis"). "\r\n" .
'DTSTART:'.$date."T".$startTime."00Z\r\n" .
'DTEND:'.$date."T".$endTime."00Z\r\n" .
'TRANSP:OPAQUE'. "\r\n" .
'SEQUENCE:1'. "\r\n" .
'SUMMARY:' . $subject . "\r\n" .
'LOCATION:' . $location . "\r\n" .
'CLASS:PUBLIC'. "\r\n" .
'PRIORITY:5'. "\r\n" .
'BEGIN:VALARM' . "\r\n" .
'TRIGGER:-PT15M' . "\r\n" .
'ACTION:DISPLAY' . "\r\n" .
'DESCRIPTION:Reminder' . "\r\n" .
'END:VALARM' . "\r\n" .
'END:VEVENT'. "\r\n" .
'END:VCALENDAR'. "\r\n";
$message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST'."\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;
$mailsent = mail($to_address, $subject, $message, $headers);
if($mailsent)
{
echo 'Meeting email sent';
}
else
{
echo 'Problem in sending email';
}
但我想在 swift 邮件程序中使用这个我不知道如何为 swift 邮件程序创建 headers 以及如何在 swift 中撰写电子邮件时通过谁能帮忙 我要这个
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "abcfer ";
$domain = 'mydomain.com';
//Create Email Headers
$mime_boundary = "----Meeting Booking----".MD5(TIME());
$headers = "From: ".$from_name." <".$from_address.">\n";
$headers .= "Reply-To: ".$from_name." <".$from_address.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";
$headers .= "Content-class: urn:content-classes:calendarmessage\n";
//Create Email Body (HTML)
$message = "--$mime_boundary\r\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$message .= "--$mime_boundary\r\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" .
'VERSION:2.0' . "\r\n" .
'METHOD:REQUEST' . "\r\n" .
'BEGIN:VTIMEZONE' . "\r\n" .
'TZID:Eastern Time' . "\r\n" .
'BEGIN:STANDARD' . "\r\n" .
'DTSTART:20091101T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" .
'TZOFFSETFROM:-0400' . "\r\n" .
'TZOFFSETTO:-0500' . "\r\n" .
'TZNAME:EST' . "\r\n" .
'END:STANDARD' . "\r\n" .
'BEGIN:DAYLIGHT' . "\r\n" .
'DTSTART:20090301T020000' . "\r\n" .
'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" .
'TZOFFSETFROM:-0500' . "\r\n" .
'TZOFFSETTO:-0400' . "\r\n" .
'TZNAME:EDST' . "\r\n" .
'END:DAYLIGHT' . "\r\n" .
'END:VTIMEZONE' . "\r\n" .
'BEGIN:VEVENT' . "\r\n" .
'ORGANIZER;CN="'.$from_name.'":MAILTO:'.$from_address. "\r\n" .
'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" .
'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" .
'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" .
'DTSTAMP:'.date("Ymd\TGis"). "\r\n" .
'DTSTART:'.$date."T".$startTime."00Z\r\n" .
'DTEND:'.$date."T".$endTime."00Z\r\n" .
'TRANSP:OPAQUE'. "\r\n" .
'SEQUENCE:1'. "\r\n" .
'SUMMARY:' . $subject . "\r\n" .
'LOCATION:' . $location . "\r\n" .
'CLASS:PUBLIC'. "\r\n" .
'PRIORITY:5'. "\r\n" .
'BEGIN:VALARM' . "\r\n" .
'TRIGGER:-PT15M' . "\r\n" .
'ACTION:DISPLAY' . "\r\n" .
'DESCRIPTION:Reminder' . "\r\n" .
'END:VALARM' . "\r\n" .
'END:VEVENT'. "\r\n" .
'END:VCALENDAR'. "\r\n";
$message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST'."\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;
$message=Yii::$app->mailer->compose()
->setFrom($from_address)
->setTo($to_address)
->setSubject('This is subject') // ???? ??????
->addTextHeader($headers)
->setHtmlBody($message)
->send();
var_dump($message);
您正在使用 swiftmailer 以避免需要自己设置 headers。您可以像这样用 headers 发送您需要的邮件:
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "acfr ffs";
$domain = 'my.com';
/**
* @var \yii\swiftmailer\Message $mail
*/
$mail=Yii::$app->mailer->compose()
->setFrom([$from_address => $from_name])
->setReplyTo([$from_address => $from_name])
->setSubject($subject)
->setTo([$to_address => $to_name]);
$mail->addHeader('Content-class', 'urn:content-classes:calendarmessage');
//Create Email Body (HTML)
$message = "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
... skipped the body for better readability ...
'END:VCALENDAR'. "\r\n";
$swiftMail = $mail->getSwiftMessage();
$swiftMail->setContentType('multipart/alternative');
$swiftMail->addPart($message, 'text/html');
$swiftMail->addPart(
$ical,
'text/calendar;name="meeting.ics";method=REQUEST',
null
);
$mail->send();
如果您不需要这个特定的 headers 并且您的目标只是发送日历事件,您可以使它更简单
$from_name = "Some One";
$from_address = "def@abc.com";
$to_name = "Soem Two";
$to_address = "xyz@abc.com";
$date = '20190905';
$startTime = '13:20:00';
$endTime = '19:00:00';
$subject = "Standup Meeting";
$description = "The purpose of the meeting is to discuss works done and inprogress";
$location = "cfrt hjd";
$domain = 'my.com';
$mail=Yii::$app->mailer->compose()
->setFrom([$from_address => $from_name])
->setReplyTo([$from_address => $from_name])
->setSubject($subject)
->setTo([$to_address => $to_name]);
//Create Email Body (HTML)
$message = "<html>\n";
$message .= "<body>\n";
$message .= '<p>Dear '.$to_name.',</p>';
$message .= '<p>'.$description.'</p>';
$message .= "</body>\n";
$message .= "</html>\n";
$ical = 'BEGIN:VCALENDAR' . "\r\n" .
... skipped the body for better readability ...
'END:VCALENDAR'. "\r\n";
$mail->setHtmlBody($message);
$mail->attachContent(
$ical,
[
'contentType' => 'text/calendar;name="meeting.ics";method=REQUEST'
]
);
$mail->send();