MailDistributor.Logic.MailSender.Send() エラー
お客様へお知らせを一斉送信する際に「MailDistributor」というソフトを使用しています。
これまでVersion6.7で問題なく使えていたのですが、突然エラーを吐くようになってしまいました。
エラー内容:Base-64 文字列に無効な文字が含まれています。
場所:MailDistributor.Logic.MailSender.Send()
エラー内容の意味が分かりません・・・これは困りました。
ネットを検索すると同様の現象が起きている人がいそうですが、「設定を確認しろ」的な何の役にも立たないアドバイスしかされていません。
仕事で使っているソフトだと一刻も早く復旧させたいのにこれは辛い。
私が解決した方法が誰かの役に立つかもしれないので書いておこうと思いました。
やったこと
- 最新版へアップデート
最新バージョンが6.8だったので再度インストールしてみました。
インストール時に「全て上書き」を選択しましたがアドレス帳や本文などは引き継ぎできていました(念のためバックアップ取っておいた方がいいかもしれません)
しかしエラーは治りません。
- ポート番号を変更
サーバーはロリポップを使っています。
普段使用しているメールソフトを確認すると、MailDistributorで設定されているポート番号が違うものになっていました。
MailDistributorはたまにしか使わないので、何かのきっかけで変更が必要になったのに設定し忘れていたのかもしれません。
ポート番号をメールソフトと同じ587にしました。
するとエラー内容が「予期しないパケット形式のため、ハンドシェイクに失敗しました。」に変わりました。
一歩前進したのか後退したのか不明ですが、サーバー(ロリポップ)側の原因ではなくMailDistributorの設定が原因ぽいなと感じました。
- 「SMTP over SSL」をやめて「SSLを使用しない」に変更
設定で変更できそうなところを探すと上記の選択肢が怪しい気がしたので変えてみました。
今度は無事メールが送信できました。
6.8になるとエラー文言が違う?
解決できたので、エラーを再現しようと設定を戻してみたのですが
ソケットが接続されていないか、sendto呼び出しを使ってデータグラムソケットで送信するときにアドレスが指定されていないため、データの送受信を要求することは禁じられています。
という見たことない文章が出てきました。
6.8にアップデートしたのでエラー文言が変わったのかもしれません。
これ以上触って変な感じになると嫌なのでここで終了しました。