

以下の環境にてメール送信プログラムを作成していますが、
ありがちな文字化け、且、ボディーが表示されない不具合が発生しています。
サーバ: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ランキング
-
openした後、closeしないでプロ...
-
perlについての質問
-
INDIRECT 横に再度抽出したい
-
テキストファイルで提出とは?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonエラー
-
文字コードについて
-
メール(iso-2022-jp-2)のデコ...
-
javaでエンコードがうまくいかない
-
IMAP4でsubjectが検索ヒットしない
-
BASP21によるbase64のデコード...
-
utf-8コードの指定
-
CASLIIの数値データ入出力
-
Perlでのメール本文の解析について
-
文字コード? 推奨UTF-8?
-
MIMEでエンコードされたMailのS...
-
文字コードの変換
-
quoted-printableのアルゴリズム
-
Encodeモジュールで日本語化したい
-
エンコードとデコードの違い?
-
urlエンコード後の文字コードは...
-
正確に日本語にマッチさせるに...
-
エンコード方法についての質問
-
perlの日本語文字コードはどう...
-
文字コードの変換
おすすめ情報