如何从自定义PHP代码发送电子邮件?

时间:2010-07-14 15:53:48

标签: drupal drupal-6

我需要使用Drupal服务从我的自定义php代码发送电子邮件。

换句话说,我注意到Drupal可以轻松发送电子邮件,所以我想知道如何使用drupal库发送电子邮件,而不是使用外部库。

3 个答案:

答案 0 :(得分:8)

您需要使用drupal_mail(),并在模块中定义hook_mail()

然后您将调用第一个,电子邮件信息将由第二个设置。 (请参阅drupal_mail()的文档页面上的示例。)

答案 1 :(得分:7)

$message = array(
  'to' => 'example@mailinator.com',
  'subject' => t('Example subject'),
  'body' => t('Example body'),
  'headers' => array('From' => 'example@mailinator.com'),
);

drupal_mail_send($message);

警告:

  • 由于未调用drupal_mail(),其他模块将无法hook_mail_alter()您的输出,这可能会导致意外结果。
  • drupal_mail_send()对发送邮件的语言一无所知,因此需要事先弄明白。
  • 您必须手动指定所需的任何其他电子邮件标头(“内容类型”等)。这些通常由drupal_mail()为您照顾。 如果您的模块发送了几种不同类型的电子邮件,并且您希望这些电子邮件模板可编辑(例如,用户模块的各种注册通知/密码重置/等电子邮件),则仍然使用hook_mail()最好的方式。

这是a comment文档中drupal_mail()中报告的内容。如果您的案例中的警告不重要,那么您可以使用报告的代码段。

答案 2 :(得分:4)

我建议使用mimemail。它是一个contrib模块,允许您轻松发送HTML邮件(+附件)或纯文本邮件。以下是自述文件的摘录:

mimemail()函数:

  • $ sender - 用户对象或电子邮件地址
  • $ recipient - 用户对象或电子邮件地址
  • $ subject - 主题行
  • $ body - html格式的正文
  • $ plaintext - boolean,是否以纯文本格式发送消息(默认为false)

此模块创建用于接收纯文本消息的用户首选项。所有对mimemail()

的调用都会尊重这种偏好

链接:http://drupal.org/project/mimemail

我希望这会对你有所帮助!