使用原始 PHP 发送电子邮件非常容易,但是发送 HTML 电子邮件涉及更多的问题,将附件带入等式会变得非常复杂。值得庆幸的是,有一些简单的方法可以发送混合电子邮件类型,您可以将电子邮件作为 HTML 发送,还可以为不支持 HTML 的电子邮件阅读器提供纯文本版本,添加附件是指向要发送的文件的简单案例!

我正在使用名为 Swiftmailer 的第三方电子邮件库来使用它下载文件并将文件上传到 lib 文件夹中,然后您就可以使用它了。

http://swiftmailer.org

快速查看他们的文档以获取示例,可以完成很多工作。这是他们发送电子邮件的文档中的代码示例:

require_once 'lib/swift_required.php';

// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
  ->setUsername('your username')
  ->setPassword('your password')
  ;

/*
You could alternatively use a different transport such as Sendmail or Mail:

// Sendmail
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');

// Mail
$transport = Swift_MailTransport::newInstance();
*/

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);

这并不复杂,但我更喜欢有一个小的可重用辅助函数,它可以通过这个函数与库交互,我可以发送一封带有少量代码的 HTML 电子邮件:

sendmail($to,$from,$subject,$textmail,$htmlmail);

通过该电话,我将发送电子邮件的人传递给我从主题发送电子邮件的地址,以及 2 个纯文本和 html 电子邮件版本,以发送附件,我将引用文件的路径:

sendmail($to,$from,$subject,$textmail,$htmlmail,'pathtomyfile');

这是非常可重用且易于实现的。辅助函数取自 swift 文档,并进行了一些调整:

function sendmail($to,$from,$subject,$textmail,$htmlmail = NULL, $attachment = NULL){

    require_once 'lib/swift_required.php';

    //Mail
    $transport = Swift_MailTransport::newInstance();

    //Create the Mailer using your created Transport
    $mailer = Swift_Mailer::newInstance($transport);

    //Create the message
    $message = Swift_Message::newInstance()

    //Give the message a subject
    ->setSubject($subject)

    //Set the From address with an associative array
    ->setFrom($from)

    //Set the To addresses with an associative array
    ->setTo($to)

    //Give it a body
    ->setBody($textmail);

    if($htmlmail !=''){

        //And optionally an alternative body
        $message->addPart($htmlmail, 'text/html');

    }

    if($attachment !=''){

        //Optionally add any attachments
        $message->attach(
          Swift_Attachment::fromPath($attachment)->setDisposition('inline')
        );
    }

    //Send the message
    $result = $mailer->send($message);

    return $result;
}

html 部分和附件是可选的,这使得它非常灵活,非常适合发送完全格式化的电子邮件。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。