Windowsサーバー上から、Perlを使って毎日メールの自動送信をしているのですが、
Thunderbirdのバージョンを38.0.1に上げたところ、今までは正常に出ていたメールのタイトル文字が化けるようになってしまいました。
ソースを見ると、iso-2022で表示した状態で、
Subject: 【Network】営業所ルータ★接続確認
MIME-Version: 1.0
Content-type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
(以下本文)
Ping ○ : xx.xx.xxx.xxx Server1 2015/06/19 08:10:06
のように出ます。
正常なメールを見ると、タイトルのところで、同じくiso-2022で表示すると、
Subject: =?ISO-2022-JP?B?GyR...... のように出るので、タイトル部分の送り方が拙いんだろうとは思うのですが、対応策を調べてみたのですが、良く判りません。
ちなみに、ソースは下記のように$messageにタイトル文字列を与えた関数で行っています。
エンコードの仕方がおかしいのでしょうか?
use Net::SMTP;
use Encode;
sub mail_send {
my ($subject, $message) = @_;
my $mailhost = '***.***.***.***'; # SMTP用のサーバー名
my $mailport = 587; # SMTP用のポート番号
my $mail_username = '***'; # メールアカウント
my $mail_password = '***'; # メールのパスワード
my $from_mail = '******'; # 送信元アドレス
my @to_mail = ('*****', '*****'); # 送信先アドレス
Encode::from_to($subject, "shiftjis", "iso-2022-jp");
Encode::from_to($message, "shiftjis", "iso-2022-jp");
my $header;
$header = "From: $from_mail\n";
$header .= "To: @to_mail\n";
$header .= "Subject: $subject\n";
$header .= "MIME-Version: 1.0"."\n";
$header .= "Content-type: text/plain; charset=ISO-2022-JP"."\n";
$header .= "Content-Transfer-Encoding: 7bit"."\n";
my $smtp = Net::SMTP->new($mailhost, Port => $mailport);
$smtp->auth($mail_username, $mail_password);
$smtp->mail($from_mail);
$smtp->to(@to_mail);
$smtp->data();
$smtp->datasend($header);
$smtp->datasend("\n");
$smtp->datasend($message);
$smtp->quit;
}
No.1ベストアンサー
- 回答日時:
次のページが参考になるかもしれません。
「Perl/メール/MIMEヘッダエンコード - yanor.net/wiki」
http://yanor.net/wiki/?Perl%2F%E3%83%A1%E3%83%BC …
有難うございました。
調べていましたら、正しいのか判りませんが、とりあえず以下の方法で解決しました。ご指摘の方法と同じではないかと思います。
Encode::from_to($subject, "shiftjis", "iso-2022-jp");
の部分を
use Jcode;
&Jcode::convert(\$subject,'jis');
$subject = jcode($subject)->mime_encode;
と置換えたら化けなくなりました。
どうもお騒がせしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- その他(メールソフト・メールサービス) Thunderbirdのメール送信ができません 1 2022/10/28 16:54
- Outlook(アウトルック) 休みが明けてメールをみたらやばいです 3 2022/08/17 09:03
- 英語 この"e-mail"が複数形でもなく、無冠詞なのはなぜですか? 「表現のための実践ロイヤル英文法」に 1 2022/07/10 16:12
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでのメール送信
-
PerlでSMTP-AUTH認証をする
-
ビジネスメールの敬称
-
初歩的な事だと思います。 Sub...
-
DATE型変数を初期化する方法
-
Excel-VBAでInputBox+Pulldown...
-
数字以外の入力をエラーにする...
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
c#でTextBoxの入力制限
-
アクセスのマクロ
-
EXCEL VBA で指定した範囲に入...
-
お問い合わせフォームから送信...
-
DataGridView 列ごとの入力制限
-
ACCESS テキストボックスの入力...
-
sendmailを使わないフォームメール
-
VBAでInputBoxの再入力をさせる...
-
excel vba でユーザーフォーム...
-
転記マクロ
-
ホームページビルダーのメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgi 実行時のエラー
-
GmailのSMTPを用いたメールフォ...
-
Perl メール件名について
-
DelegateでPOP3、SMTPのリバー...
-
Net::SMTPでのメール送信について
-
Thunderbirdのアップデートをし...
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
DATE型変数を初期化する方法
-
数字以外の入力をエラーにする...
-
初歩的な事だと思います。 Sub...
-
お問い合わせフォームから送信...
-
EXCEL VBA で指定した範囲に入...
-
Windowsのアプリ開発ってなんの...
-
入力フォームの値をQRコードで...
-
教えて!全角文字「μ」の半角
-
Excel-VBAでInputBox+Pulldown...
-
httpリクエストの送り元の特定
-
フォームを再送信しますか?
おすすめ情報