画像をサーバーにアップロードするためのファイル入力フィールドがない限り、PHPMailer 経由で (またはその他の方法で) 画像を送信することはできません。
<form>
...
<input type="file" />
...
</form>
それは、実際にメールに添付された画像を送信したい場合です。一方、メール本文自体に画像コードが埋め込まれたメールを送信したい場合は、PHPMailer でもサポートされている HTML メールを送信する方法を探していると思います。これを行う方法の例を次に示します (画像自体はパブリックにアクセスできる必要があることに注意してください)。
<?php
/**
* Sending an HTML email through PHPMailer and SMTP...
*/
require_once('PHPMailer.class.php');
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail->CharSet = 'utf-8';
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "smtp.example.com"; // sets the SMTP server
$mail->Port = 587; // set the SMTP port for the GMAIL server
$mail->Username = "user@example.com"; // SMTP account username
$mail->Password = "password"; // SMTP account password
$mail->AddReplyTo('user@example.com', 'Sending User');
$mail->AddAddress('user_2@example.com', 'Receiving User');
$mail->SetFrom('user@example.com', 'Sending User');
$mail->Subject = 'Image';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML('<html><body><img src="http://example.com/path_to_image.jpg" width="xxx" height="xxx" /></body></html>'));
$mail->Send();
echo "Message Sent OK<p></p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
?>
HTML メールに関しては、独自の一連のルールとベスト プラクティスがあります。つまり、画像を送信するよりも複雑なことをする場合は、このような CSS インライナーを使用する必要がありますbackground-image
。