0

次の関数は Drupal6 の include/mail.inc に含まれており、「php.ini」という名前のファイルに埋め込まれたデフォルトの SMTP 設定を使用してメールを送信します。

function drupal_mail_send($message) {
  // Allow for a custom mail backend.
  if (variable_get('smtp_library', '') && file_exists(variable_get('smtp_library', ''))) {
    include_once './'. variable_get('smtp_library', '');
    return drupal_mail_wrapper($message);
  }
  else {
    $mimeheaders = array();
    foreach ($message['headers'] as $name => $value) {
      $mimeheaders[] = $name .': '. mime_header_encode($value);
    }
    return mail(
      $message['to'],
      mime_header_encode($message['subject']),
      // Note: e-mail uses CRLF for line-endings, but PHP's API requires LF.
      // They will appear correctly in the actual e-mail that is sent.
      str_replace("\r", '', $message['body']),
      // For headers, PHP's API suggests that we use CRLF normally,
      // but some MTAs incorrecly replace LF with CRLF. See #234403.
      join("\n", $mimeheaders)
    );
  }
}

しかし、私は共有ホストを使用しているため、php.ini を編集できません。上記の関数「drupal_mail_send」を編集し、以下のコードをその関数に追加して、PHP の mail() 関数をバイパスし、直接電子メールを送信できるようにします。私のお気に入りの SMTP サーバー。

include('Mail.php');

$recipients = array( 'someone@example.com' ); # Can be one or more emails

$headers = array (
    'From' => 'someone@example.com',
    'To' => join(', ', $recipients),
    'Subject' => 'Testing email from project web',
);

$body = "This was sent via php from project web!\n";

$mail_object =& Mail::factory('smtp',
    array(
        'host' => 'prwebmail',
        'auth' => true,
        'username' => 'YOUR_PROJECT_NAME',
        'password' => 'PASSWORD', # As set on your project's config page
        #'debug' => true, # uncomment to enable debugging
    ));

$mail_object->send($recipients, $headers, $body);

参照用に変更したコードを書き留めていただけますか?

4

1 に答える 1

0

のコードdrupal_mail_sendはDrupalコア機能の一部であり、Drupalを更新するときに変更が上書きされる可能性があるため、直接変更しないでください。

Drupalコアファイルの変更は、Drupalコミュニティによって「ハッキングコア」と呼ばれることが多く、ほとんど推奨されていません。

Drupalには、役立つモジュールがすでに多数用意されています。見る:

http://drupal.org/project/phpmailerモジュール:

PHPMailerライブラリを使用して電子メールを送信するためのSMTPサポートを追加します。メールサーバーとしてGoogleMailを使用する方法の詳細な設定手順が付属しています。

http://drupal.org/project/smtpモジュール:

このモジュールを使用すると、DrupalはPHP mail()関数をバイパスして、SMTPサーバーに直接電子メールを送信できます。

于 2012-04-18T13:08:40.523 に答える