.NET 4.0
MailMessageの添付プロパティ
Attachmentsを使用してもファイルが添付できません。
元々メールを送信している機能があり、
添付機能を追加することになりました。
以下のようなコードを追記しています。
(調べて出てくるようなコードは全て試しています)
message.Attachments.Add(new System.Net.Mail.Attachment(@"D:full/pass/temp.jpeg", MediaTypeNames.Image.Jpeg));
指定パスは間違いなく、自身の直下に置いてある画像です。
メールは送信されますが、画像は添付されておらず、
なぜかもともと表示していた本文も表示されていない、という状態でメールが飛んできます。
エラーが出る訳でもなく、何が悪いのか全く分かりません。
コードが悪いのか、画像が取得出来ていないのか、
メールサーバーの問題なのか、見当もつかず、困っています。
何か分かることありませんか?
ファイルのパスは”D:\~”ではなく"D:~"なのですか?
パスを隠す際のミスです。
ファイルパスに間違いはありません。
一般的なメーラーで同様のメールを送信した場合は正常なのですか?
すみません、質問の意味がちょっとよく分からないのですが、
画像添付のコードを書かなければ、タイトルと本文は正常に表示され
問題なくメールは送信受信されます。
作成したプログラムを介してメールを送信する場合と、メーラーを介してメールを送信する場合の違いは検証したのですか、という質問だと思いますよ。
これにより「メールサーバーの問題なのか」の切り分けはできますよね?
あなたの作成したプログラムではなく、OutlookやThunderbirdなどの一般的なメーラーでプログラムと同じようにjpegを添付したメールを送信した場合に正常に送信できるかです。
この時、アカウント等は同じにしてください。
要は、メールサーバの話なのかプログラムの話なのかの切り分けです。
なるほど、失礼しました。
送信受信に関して、画像添付に問題ありませんでした。
そうなると、受信したメールのソースを見て、プログラムから送信した場合とメーラーから送信した場合で何が違うのか確認してください。
また、message.Attachments.Addの行をコメントアウトしただけでメール本文は正常になるのでしょうか?
受信したメールを保存しようとした際の違いは、
メーラーからのがhtml、プログラムからがtxtになる点です。
これ関係ありますか?
画像添付のコードを消すと、本文まで
綺麗に表示されます。
受信したメールのソースを見てください。
Content-Type: image/jpeg; name=temp.jpeg
Content-Transfer-Encoding: base64
Content-Disposition: attachment
みたいな感じで添付ファイルの情報があるか確認してみてください。
Content系の情報は記載されていませんでした。
MailMessageの生成~送信までのソース(ここをコメントアウトすると正常などの情報も)を出せませんか?
諸事情でソースをそのままは書けませんが、
その辺に転がってるテンプレートとほぼ同じです。
```
//MailMessageの作成
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
//送信者(メールアドレスが"sender@xxx.xxx"、名前が"鈴木"の場合)
msg.From = new System.Net.Mail.MailAddress("sender@xxx.xxx", "鈴木");
//宛先(メールアドレスが"recipient@xxx.xxx"、名前が"加藤"の場合)
msg.To.Add(new System.Net.Mail.MailAddress("recipient@xxx.xxx", "加藤"));
//件名
msg.Subject = "こんにちは";
//本文
msg.Body = "こんにちは。\r\n\r\nそれではまた。";
msg.Attachments.Add(new System.Net.Mail.Attachment(@"D:\full\pass\temp.jpeg", MediaTypeNames.Image.Jpeg));
System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient();
//SMTPサーバーなどを設定する
sc.Host = "localhost";
sc.Port = 25;
sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
//メッセージを送信する
sc.Send(msg);
//後始末
msg.Dispose();
//後始末(.NET Framework 4.0以降)
sc.Dispose();
```
当方で実行したところ、添付できております。
これを実行しても添付できないのですか?
添付できたのですか・・・!
こちらは添付できません。
送信先のメールアドレスを変更してみる、
送信元を別のものにしてみる。
などは試されましたか?
Yahooメールからの送信でも添付ファイルは確認できましたので、ご自身が作成されたプログラムの送信元を変更して添付が送れるのであれば、別の要因かもしれません。
あなたの回答
tips
プレビュー