システムから送信したメールが、プロバイダーの受信メールサーバーのスパムフィルターにひっかかる事例が最近頻発する。
受信者側に、連絡先アドレスとして登録してもらう、という対策も必要なのだろうが、そもそも、MLのGoogleグループ化含めて一応抜本的な解決策だけは考えておく(抜本的に状況を好転させるためには、メアド自体を変更するしかないだろう・・・Gmail ないし、その他プロバイダーメール)。

レンタルサーバーの仕様上、どんなメールコマンド送信しているのか、自分でいじれる範疇を超えているのでブラックボックスになってしまうのは仕方ない。なので、1) 明示的にFQDN名を当方で指定して、メール送信処理を行う。2) 他の一般プロバイダーのSMTPサーバーを指定して送信する(この場合、現状の代表アドレスは、他のアドレス~出来れば一般プロバイダーが望ましいのだが、に変更)。

ただし、3つのシステム(公式サイトからの返信、イベント管理システムからの自動返信、SNSからの自動返信)でできるだけ共通のアドレスを使いたい(でないと、都度受信許可設定してもらうのに、お手数をかけてしまうので)。

3001

GmailをSMTPサーバとして使用するWordPressプラグイン「Cimy Swift SMTP」というのがあるのは知っているが、XOOPSの場合、SMTPサーバーを別途指定可能であっただろうか調べる必要がある。

外部SMTPサーバーを指定してメール送信

<?php

/*
/usr/local/OpenPNE/webapp/lib/util/mail_send.php がメールを送信しているスクリプト。
mail_send.phpの60行目

return mail($address, $subject, $body, $headers, $params);

を

include_once('Mail.php');
 $recipients = "$address" ;
 $headers = "" ;
 $headers['From'] = $from ;
 $headers['To'] = "$address";
 $headers['Subject'] = "$subject";
 $mail_options = array(
 'host' => 'SMTPサーバー', // SMTPサーバー名
'port' => 25, // ポート番号
'auth' => false, // SMTP認証 true false
 'username' => "", // ユーザー名
'password' => "", // パスワード
'localhost' => 'サーバー名' //送信元サーバーのFQDN名 HELOに使う
);
 $mail_object =& Mail::factory("SMTP",$mail_options);
 $mail_object->send($recipients, $headers, $body);
 #return mail($address, $subject, $body, $headers, $params); //オリジナルをコメントアウト 
と書き換えればOK。

?>

Gmailから送信

phiki***@gmail.com とか、***@pia-no.com(google appsで、実体はGmail) とかの、Gmailを使う場合、以下のようにメール送信処理すればいいだろう。

<?php
// PHPMailerを使用
require("PHPMailer/class.phpmailer.php");

mb_language("japanese");
mb_internal_encoding("UTF-8");
  
$mailer = new PHPMailer();
$mailer->IsSMTP();
$mailer->Host = 'ssl://smtp.gmail.com:465';
$mailer->SMTPAuth = TRUE;
$mailer->Username = 'user@gmail.com';  // Gmailのアカウント名
$mailer->Password = 'gmail_password';  // Gmailのパスワード
$mailer->From     = 'from@gmail.com';  // Fromのメールアドレス
$mailer->FromName = mb_encode_mimeheader(mb_convert_encoding("Fromの名前","JIS","UTF-8"));
$mailer->Subject  = mb_encode_mimeheader(mb_convert_encoding("メールのタイトル","JIS","UTF-8"));
$mailer->Body     = mb_convert_encoding("メールの内容","JIS","UTF-8");
$mailer->AddAddress('friend@example.com'); // 宛先
// $mailer->AddReplyTo($email, $from);
$attachfile = "files/test.xls"; //添付ファイルパス
//添付ファイル追加
$mailer->AddAttachment($attachfile);
$mailer->AddAttachment($attachfile2);
$mailer->Send(); //メール送信
?>

window.onload = function() {
dp.SyntaxHighlighter.ClipboardSwf = ‘http://tmh.main.jp/lib/js/dp.SyntaxHighlighter/Scripts/clipboard.swf’;
dp.SyntaxHighlighter.HighlightAll(‘code’);
};

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です