LoginSignup
7
7

More than 5 years have passed since last update.

QdmailでHTMLメールを送るときの4つの嵌りポイント

Last updated at Posted at 2016-02-17

環境

PHP 5.1.2
qdmail 1.2.6b

qdmailでのHTMLメール送信のさせ方

基本的な使い方は、下記です。

php
require_once 'qdmail.php';

$mail = new Qdmail();

$mail -> to( 'address@example.com' , '宛先日本語名' );
$mail -> subject( 'タイトルも日本語で' );
$mail -> html( 'ここに内容をいれます' );
$mail -> from( 'from@example.com' , '配信元日本語名' );

$mail ->send();

嵌りポイント1:文字コード

UTF-8で合わせる場合は、下記のように指定します。

php
mb_language('ja');
mb_internal_encoding('UTF-8');

私の環境では「件名」で文字化けしてしまった為に
下記設定を使って文字化けを回避しました。

php
$mail -> unitedCharset( 'UTF-8' );

嵌りポイント2:URLをリンクにする

※配信するテキストをユーザに入力してもらう形のツールを
 作っていたので、嵌りました。普通にHTML書いていれば、特に気にならないポイントだと思います。

GmailやYahooメールは、自動でURLをリンクにしてくれますが
Becky!ではURLをリンクに自動変換してくれませんでした。

下記記事を参考にURLをリンク変換するとよさそうです。
http://qiita.com/mpyw/items/1e422848030fcde0f29a

嵌りポイント3:HTMLを表示させないメールクライアントに対応

qdmailではデフォルトで、HTMLが表示できないメールクライアントでは
代替テキストを表示するようになっています。

Gmail対応

マルチパート部分の順序が「HTML→テキスト」になっている為
Gmailでは、HTMLメールを送信しても、必ずテキスト表示されてしまいます。

下記記事で説明されているように、マルチパート部分の順序を変更します。
http://www.webdesignersblog.jp/archives/2010/04/16184520.php

嵌りポイント4:HTMLと代替テキストで体裁を合わせる

preタグ

<pre>タグは、改行方法が「<br />」と「\n」の
2通りあり、HTMLと代替テキストで改行が合わなくなる原因となる為、使わない方がよいです。

改行

HTMLの代替テキストは「<br />」で改行されますが
複数「<br />」がついていても、1改行しかされません。

複数改行を行う場合は、何かしら1行に文字が入っていないと
ダメなようだったので、半角スペースをひとつ入れて「<br />」を入れる事で
改行させました。

※私が知らないだけで、何か方法があるのかもしれません。

注意点:文字化け

iso-2022-jpで送信すると、
半角カナ(メールでは基本使わないですが)や機種依存文字、
IBM拡張文字、NEC選定IBM拡張文字で文字化けしました。
http://hal456.net/qdmail/irregular_char

特殊文字を送信する場合は、UTF-8で本文エンコードをbase64に
するのがよいようです。(試してないです)

完全に文字化けしないメール配信ツールを作るのは難しいので
見れない場合は、サーバに保存したHTMLを見てもらう形で逃げるのも手ですかね。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7