フミヨイのSMTPリレーサービスのご利用にあたり、SMTP認証を行う必要があります。
本ページでは、PHP、Java、PythonでSMTP認証を行ってフミヨイSMTPリレーサービスを利用するサンプルコードを紹介します。
PHP
1.PHPMailer ダウンロード
PHPの標準関数ではメール送信時にSMTP認証を行うことは出来ないため、PHPMailerを使用します。
PHPMailerがインストールされていない場合は、こちらのリンクよりPHPMailerをダウンロードして下さい。
※緑色の「Code」ボタン → 「Download ZIP」をクリック。
2.サンプルコード
以下にPHPMailerを利用し、メール送信時にSMTP認証を行うサンプルコードを記載します。
<?php
// PHPMailer インポート
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';
//エラーメッセージ用日本語言語ファイルを読み込む場合
require 'PHPMailer/language/phpmailer.lang-ja.php';
//言語、内部エンコーディングを指定
mb_language("japanese");
mb_internal_encoding("UTF-8");
// インスタンス生成
$mail = new PHPMailer(true);
//文字コード設定
$mail->CharSet = "iso-2022-jp";
$mail->Encoding = "7bit";
// SMTP接続の各種設定
$mail->isSMTP(); // SMTP を使用
$mail->Host = '[SMTPリレーホスト名]'; // 接続先サーバを指定(フミヨイSMTPリレーサーバを指定)
$mail->SMTPAuth = true; // SMTP認証を有効
$mail->Username = 'apikey'; // ユーザ名(apikey 固定)
$mail->Password = '[SMTP認証パスワード]'; // SMTP認証パスワード
$mail->Port = 25; // 接続先ポートを指定
// メール内容の各種指定
$mail->setFrom('from@example.com', mb_encode_mimeheader('差出人名')); // 差出人(Fromヘッダ)
$mail->addAddress('to@example.com', mb_encode_mimeheader("受信者名")); // 宛先
$mail->addCustomHeader('X-SM-ID', '[配信ID]'); // 拡張ヘッダ(X-SM-ID)
$mail->Subject = mb_encode_mimeheader('件名'); //件名
$mail->AltBody = mb_convert_encoding('メール本文',"JIS","UTF-8"); // テキスト形式の本文
// 送信
$mail->send();
?>
Java
1.サンプルコード
以下にjavamail でSMTP認証を行いメール送信をするサンプルコードを記載します。
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class auth_send {
private Session session;
private String charset;
private String smtpHost;
public auth_send(String smtpHost, String charset) {
this.charset = charset;
Properties props = new Properties();
//SMTP サーバの設定
this.smtpHost = smtpHost;
props.put("mail.smtp.host", smtpHost);
props.setProperty("mail.smtp.auth", "true");
this.session = Session.getDefaultInstance(props, null);
}
private void sendmail(String userId, String passwd)
throws MessagingException {
//各種メール内容
String from_addr = "from@example.com"; //送信元(Fromヘッダ)
String to_addr = "to@example.com"; //宛先
String subject = "件名"; //件名
String message = "メール本文"; //本文
String xsmid = "sendtest123"; //拡張ヘッダ(X-SM-ID)
MimeMessage msg = new MimeMessage(session);
//送信先の設定
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(
to_addr));
//送信元の設定
msg.setFrom(new InternetAddress(from_addr));
//送信日付の設定
msg.setSentDate(new Date());
//Subject の設定
msg.setSubject(subject, charset);
//拡張ヘッダ(X-SM-ID)の設定
msg.setHeader("X-SM-ID", xsmid);
//本文 の設定
msg.setText(message, charset);
//メールの送信
Transport tp = session.getTransport("smtp");
tp.connect(smtpHost, userId, passwd);
tp.sendMessage(msg, new InternetAddress[]{new InternetAddress(
to_addr)});
}
public static void main(String[] args) throws Exception {
auth_send mail = new auth_send("[SMTPリレーホスト名]", "iso-2022-jp"); // 接続先サーバを指定(フミヨイSMTPリレーサーバを指定)
mail.sendmail("apikey","[SMTP認証パスワード]"); // ユーザ名(apikey固定)、SMTP認証パスワード
}
}
Python
1.サンプルコード
以下にPythonでSMTP認証を行いメール送信をするサンプルコードを記載します。
from smtplib import SMTP
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formatdate
# メッセージ作成処理
def createMIMEText(from_addr, to_addr, message, subject):
# MIMETextを作成
msg = MIMEText(message, "plain", 'utf-8')
# メール内容設定
msg["Subject"] = subject
msg["From"] = from_addr
msg["To"] = to_addr
msg['X-SM-ID'] = xsmid
msg['Date'] = formatdate()
return msg
# 送信処理
def send_email(msg):
# SMTP認証情報
account = "apikey"
password = "[SMTP認証パスワード]"
# 接続先
host = '[SMTPリレーホスト名]'
port = 25
# サーバを指定
server = SMTP(host, port)
# ログイン処理
server.login(account, password)
# メールを送信
server.send_message(msg)
# 切断
server.quit()
# メールの送り主
from_email = "from@example.com"
# 宛先
to_email = "to@example.com"
# 件名、メール本文、配信ID(X-SM-ID)
subject = "件名"
message = "メール本文"
xsmid = "sendtest123"
# メッセージ作成
mime = createMIMEText(from_email, to_email, message, subject)
# メール送信
send_email(mime)