

以下の環境にてメール送信プログラムを作成していますが、
ありがちな文字化け、且、ボディーが表示されない不具合が発生しています。
サーバ:linux apache レンタルサーバ
※Encode.pm、Jcode.pm無し。モジュールインストール不可。
Perl version: 5.006001
ソースエンコード:utf-8
自分の解釈としてはutf8で記述しているので、
charset=utf-8にしておけば、
MIMEエンコードさえしてやれば
表示できると考えているのですが、
やはり甘い考えなのでしょうか?
また、同サイト質問NO2868794も参考にさせていただきましたが、上手くいきません。
以下ソース(エンコード:utf-8)
use utf8;
use MIME::Base64;
use POSIX;
※アドレス表記はこのサイトの投稿チェックに引っかかるので省略します。
my $to = 'XXXX@XXXX'.XXX;
my $from_nm = "送信者名";
my $from_adr = "XXXXX@XXX.XXX";
my $subject = "メール表題";
my $body = "本文";
# 送信者名を MIME エンコード
encode_base64($from_nm,"");
# subjectを MIME エンコード
encode_base64($subject,"");
$subject = "=?utf-8?B?" . $subject . "?=";
# 本文を MIME エンコード
encode_base64($body);
my $MailPass = "XXXX/XXXX/XXX"; #SendMail Pass
open(MAIL,"| $MailPass -t");
#========================================================
print MAIL <<"EOF_MAIL";
From: $from_nm<$from_adr>
To: $to
Subject: $subject
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
MIME-Version: 1.0
$body
EOF_MAIL
#========================================================
close MAIL;
その他、色々ググっては見たのですが、自分ではみつけられず、
どうかアドバイスありましたらよろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> ありがちな文字化け、且、ボディーが表示されない不具合が発生しています
「ありがちな文字化け」ってどんなのですか?
「ボディーが表示されない」だけですか?送信自体されてないのですか?
まず、すごく基本的なことなんですけど
encode_base64 のマニュアルを良く読むことから始めてはいかがでしょうか?
http://perldoc.jp/docs/modules/MIME-Base64-2.12/ …
このプログラムでは、おそらく、あなたの期待通りに動作していません。
あと、いきなりメールにするのではなく
my $MailPass = "/usr/bin/cat";
などして、標準出力で内容が正しいか確認するのもいいかと。
この回答への補足
アドバイス有難うございます。
「ありがち」と言うのは、ウェブで検索してもよく質問されているので、
「よくある質問で恐縮です」という意味で表現させて頂きました。
紛らわしい表記で申し訳ありませんでした。
メール内容としては、ヘッダ、ボディー共に送信されています。
ただ、エンコードが正常にできていないのか、メーラの方でヘッダ内文字が文字化けし、
またボディーが表示されていない状態です。
アドバイス通りよくマニュアルを良く読むと、
エンコード値はリターン値として返ってくる事に気が付き、
修正しましたらボディーが出てくるようになりました。
有難うございました。
しかしながら送信者の日本語表示部分だけ英数字で表示されており、
ここがどういう事なのかが理解できません。
「送信者名」→「6YCB5L+h6ICF5ZCN」
試しにエンコード無しで試してみましたら、
beckyでは正常に出力されましたが、
OutlookExpressだと文字化けしてしまいました。
送信者名部分はメーラによって処理が異なるのでしょうか。
何か特殊な方法を取る必要があるのでしょうか?
またアドバイスありましたら宜しくお願いします。
表題と同じく、送信者も同じコードを付加させることで正常に表示されるようになりました。
# 送信者名を MIME エンコード
$from_nm=encode_base64($from_nm,"");
$from_nm = "=?utf-8?B?" . $from_nm . "?=";
# subjectを MIME エンコード
$subject=encode_base64($subject,"");
$subject = "=?utf-8?B?" . $subject . "?=";
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
quoted-printableのアルゴリズム
-
文字コード? 推奨UTF-8?
-
IMAP4でsubjectが検索ヒットしない
-
pythonエラー
-
Perl:ファイル名だけ文字化けする
-
エンコード方法についての質問
-
「繝・せ繝・」となる文字化け
-
BASP21によるbase64のデコード...
-
文字コードについて
-
Jcodeモジュールの代わりにjcod...
-
MIMEでエンコードされたMailのS...
-
perlの日本語文字コードはどう...
-
メール(iso-2022-jp-2)のデコ...
-
Perl+UTF8で文字化け
-
メールを文字化けしないように...
-
jisコードで16進数の『3c』か...
-
Lite.pmを使ったメールで文字化け
-
CSVファイルの中で、「 , 」カ...
-
Excelについて質問です。 セル...
-
エクセルで数値を全角文字(カ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IMAP4でsubjectが検索ヒットしない
-
pythonエラー
-
メール(iso-2022-jp-2)のデコ...
-
BASP21によるbase64のデコード...
-
jcode.plとはどんなものですか
-
1つのサイトで文字コードが混在...
-
「繝・せ繝・」となる文字化け
-
テキストファイルから日本語部...
-
jcode.pmでconvertできない
-
標準入力からのutf-8→euc-jpで...
-
Encodeについて
-
index関数で日本語を使用する場...
-
Perl+UTF8で文字化け
-
Encodeモジュールで日本語化したい
-
Perlでのメール本文の解析について
-
urlエンコード後の文字コードは...
-
MIMEでエンコードされたMailのS...
-
URLエンコードされたデータを戻...
-
文字コード? 推奨UTF-8?
-
CSVファイルの中で、「 , 」カ...
おすすめ情報