C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: 【C#】AU携帯への添付ファイル送信ができません


(過去ログ 77 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■45277 / inTopicNo.1)  【C#】AU携帯への添付ファイル送信ができません
  
□投稿者/ アキ (7回)-(2010/01/07(Thu) 21:49:53)

分類:[ASP.NET (C#)] 

お世話になります。
現在、PCから各キャリア携帯にメールを送信するプログラムを作成しています。
そこでAU携帯にのみ添付画像が送れない現象が出て困っています。
以下にプログラムを掲載します。


---------------------------------------------------------
AlternateView altView = null;
System.Net.Mail.Attachment attach = null;

// SMTPクライアント作成
SmtpClient sc = new SmtpClient();
sc.Host = "xxx.co.jp";
sc.Credentials = new NetworkCredential("aaa@xxx.co.jp", "password");
sc.Port = 587;
sc.EnableSsl = false;
sc.Timeout = 120000;

// メールのインスタンス生成
MailMessage msg = new MailMessage();

msg.From = "bbb@xxx.com";
msg.Subject = "題名";

Encoding enc = Encoding.GetEncoding("iso-2022-jp");
byte[] byteBody;
byteBody = enc.GetBytes("あいうえお");

// バイト配列をメモリストリームに格納
MemoryStream memoryStreamk = new MemoryStream(byteBody);

altView = new AlternateView(memoryStream, new ContentType("text/plain; charset=iso-2022-jp"));
msg.AlternateViews.Add(altView);

// 添付設定
FileStream fs = new FileStream("fileName", FileMode.Open, FileAccess.Read);
attach = new System.Net.Mail.Attachment(fs, "ImageFileName", MediaTypeNames.Image.Jpeg);
msg.Attachments.Add(attach);

---------------------------------------------------------

絵文字に対応するため本文にバイト単位で絵文字コードを埋め込み、メモリストリームのままAlternateViewでセットし送信しています。

画像のファイルサイズは数キロで非常に小さく、JPEGファイルです。
ちなみに、本文をメモリストリームを使用せず
msg.Body = "あいうえお";
のような形で記述すれば問題なく添付画像も送信できます。

問題点などご存じでしたら、ご教授願えないでしょうか?


引用返信 編集キー/
■45286 / inTopicNo.2)  Re[1]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ もりお (157回)-(2010/01/08(Fri) 16:09:04)
No45277 (アキ さん) に返信
> msg.Body = "あいうえお";
> のような形で記述すれば問題なく添付画像も送信できます。

正常なメールと画像が表示されないメールのソーステキストを
見比べてみてはいかがでしょうか。
引用返信 編集キー/
■45307 / inTopicNo.3)  Re[2]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ アキ (8回)-(2010/01/09(Sat) 15:22:41)
No45286 (もりお さん) に返信
> ■No45277 (アキ さん) に返信
>>msg.Body = "あいうえお";
>>のような形で記述すれば問題なく添付画像も送信できます。
>
> 正常なメールと画像が表示されないメールのソーステキストを
> 見比べてみてはいかがでしょうか。


もりおさん、返信ありがとうございます。
AU携帯に送信するデータをPCメールに送信し、OUTLOOKでメールヘッダは見ているのですが、
添付が送信できる場合、できない場合とも変わりません。
OUTLOOKのメッセージオプションで見ているのですが、他にソースを見る方法があるのでしょうか?

------ メールヘッダ -------
Return-Path: <xxx@xxx.co.jp>
Received: from xxx.xxx.ocn.ne.jp (211.11.xxx.xxx)
by SV002-SP with SMTP; Thu, 07 Jan 2010 05:59:38 GMT
MIME-Version: 1.0
From: =?iso-2022-jp?B?GyRCJUYlOSVIQXc/LhsoQg==?= <xxxx@xxxx.co.jp>
Sender: xxxxx@xxxx.co.jp
To: yyyy@yyyy.co.jp
Reply-To: xxxx@xxxx.co.jp
Date: 7 Jan 2010 14:58:58 +0900
Subject: =?iso-2022-jp?B?GyRCJF4kPyReJD8kOSQkJF4kOyRzISMbKEI=?=
Content-Type: multipart/mixed; boundary=--boundary_1_e381bb9d-a151-4d81-b32c-9abce2d7f8d9



引用返信 編集キー/
■45308 / inTopicNo.4)  Re[3]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ ごう (80回)-(2010/01/09(Sat) 16:58:57)
No45307 (アキ さん) に返信
> ■No45286 (もりお さん) に返信
>>■No45277 (アキ さん) に返信
> >>msg.Body = "あいうえお";
> >>のような形で記述すれば問題なく添付画像も送信できます。
>>
>>正常なメールと画像が表示されないメールのソーステキストを
>>見比べてみてはいかがでしょうか。
>
>
> もりおさん、返信ありがとうございます。
> AU携帯に送信するデータをPCメールに送信し、OUTLOOKでメールヘッダは見ているのですが、
> 添付が送信できる場合、できない場合とも変わりません。
> OUTLOOKのメッセージオプションで見ているのですが、他にソースを見る方法があるのでしょうか?



メールヘッダではなくて、メール本文のソースのことですよ。
Outlookをお使いなら、メール本文上で右クリック→[HTMLソースの表示]で見ることが出来ます。



引用返信 編集キー/
■45310 / inTopicNo.5)  Re[4]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ アキ (11回)-(2010/01/09(Sat) 17:23:38)
ごうさん、返信ありがとうございます。

> メールヘッダではなくて、メール本文のソースのことですよ。
> Outlookをお使いなら、メール本文上で右クリック→[HTMLソースの表示]で見ることが出来ます。

メールはテキストメールなので、「ソースの表示」はできません。
私が思っているのと違うソースの表示なのでしょうか?

現在、AlternateViewに本文と添付ファイルを別々に追加し送信しようと試みています。


// 添付設定の部分を入替
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
AlternateView altView2 = new AlternateView(fs, new ContentType("image/jpeg;"));
msg.AlternateViews.Add(altView2);


しかし、2つセットしても本文のみしか送信(受信?)できません。
本文をセットせず添付だけ上記の方法でセットしたら、添付ファイルの送信はできます。
AlternateViewに複数Addし、それを1つのメールとして送信することは可能なのでしょうか?
引用返信 編集キー/
■45314 / inTopicNo.6)  Re[5]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ もりお (160回)-(2010/01/09(Sat) 19:39:27)
2010/01/09(Sat) 20:42:00 編集(投稿者)
No45310 (アキ さん) に返信
> メールはテキストメールなので、「ソースの表示」はできません。
> 私が思っているのと違うソースの表示なのでしょうか?

説明不足でした。
ごうさんがおっしゃるようにメール本文も含めたソースです。
こんな感じのものです。

Return-Path: <...>
Received: from ...
        by mx.google.com with ESMTPS id 20sm1480767iwn.9.2010.01.09.03.05.04
        (version=SSLv3 cipher=RC4-MD5);
        Sat, 09 Jan 2010 03:05:06 -0800 (PST)
Message-ID: <...>
Date: Sat, 09 Jan 2010 20:05:07 +0900
From: ... <...>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0
MIME-Version: 1.0
To: ...
Subject: Subject
Content-Type: multipart/mixed;
 boundary="------------010000010808070006060902"

This is a multi-part message in MIME format.
--------------010000010808070006060902
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

Body

--------------010000010808070006060902
Content-Type: image/jpeg;
 name="..."
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0="..."

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAkGBwgHBgkICAgLCgkLDhcPDg0NDh0VFhEXIh4k4k
...

Outlook で見れないようでしたら、Thunderbird を使ったり Gmail を利用し
たりで見ることができます。

> AlternateViewに本文と添付ファイルを別々に追加し送信しようと試みています。
> AlternateViewに複数Addし、それを1つのメールとして送信することは可能なのでしょうか?

おそらく送信することは出来ると思いますが、受信側で期待した通りに解釈さ
れない可能性が高いのが悩みどころです。

まずは、ソースを閲覧できる環境を用意した方が善いかと思います。
もしかしたら、古い形式である System.Web.Mail を利用する必要があるかも
しれませんし .NET Framework の標準ライブラリーでは対応できないかもしれ
ません。期待するメールのソースがどの様なものか明確になれば詳しいかたが
教えてくださるはず・・・

引用返信 編集キー/
■45369 / inTopicNo.7)  Re[6]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ アキ (12回)-(2010/01/11(Mon) 15:29:32)
> Outlook で見れないようでしたら、Thunderbird を使ったり Gmail を利用し
> たりで見ることができます。

Thunderbirdを使用し見ることが出来ました!

原因がだいたい分かりました。
Content-Typeの構成が異なるようでした。

■添付が送れる場合 #########################################

ヘッダ
Content-Type: multipart/mixed; boundary=--boundary_0_b5120b7c-3c84-4b49-8684-6b75647cc666

----boundary_0_b5120b7c-3c84-4b49-8684-6b75647cc666
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: quoted-printable

本文

----boundary_0_b5120b7c-3c84-4b49-8684-6b75647cc666
Content-Type: image/jpeg; name="=?utf-8?B?56eL5bGx5Y2wLmpwZw==?="
Content-Transfer-Encoding: base64

添付ファイル

----boundary_0_b5120b7c-3c84-4b49-8684-6b75647cc666--

############################################################


■添付が送れない場合(Attachments.Addで添付) ##############

ヘッダ
Content-Type: multipart/mixed; boundary=--boundary_1_e954f1da-10cd-4744-bfe3-f94970979477

----boundary_1_e954f1da-10cd-4744-bfe3-f94970979477
Content-Type: multipart/alternative; boundary=--boundary_0_e2643383-52dc-4e8a-808d-a931db7d0bfe

----boundary_0_e2643383-52dc-4e8a-808d-a931db7d0bfe
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

本文

----boundary_0_e2643383-52dc-4e8a-808d-a931db7d0bfe--

----boundary_1_e954f1da-10cd-4744-bfe3-f94970979477
Content-Type: multipart/mixed; boundary=--boundary_2_70b84b9d-33e1-40b3-88e9-71bc58889bf3


----boundary_2_70b84b9d-33e1-40b3-88e9-71bc58889bf3
Content-Type: image/jpeg; name="=?utf-8?B?56eL5bGx5Y2wLmpwZw==?="
Content-Transfer-Encoding: base64

添付ファイル

----boundary_2_70b84b9d-33e1-40b3-88e9-71bc58889bf3--

----boundary_1_e954f1da-10cd-4744-bfe3-f94970979477--

############################################################

※multipart/mixed; が2回出現していて構成が変?


■添付が送れない場合(FileStreamで添付) ###################
ヘッダ
Content-Type: multipart/alternative; boundary=--boundary_0_683bad21-e50b-4f16-adca-00ba34c8519f

----boundary_0_683bad21-e50b-4f16-adca-00ba34c8519f
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

本文
----boundary_0_683bad21-e50b-4f16-adca-00ba34c8519f
Content-Type: image/jpeg; charset=iso-2022-jp
Content-Transfer-Encoding: base64

添付ファイル

----boundary_0_683bad21-e50b-4f16-adca-00ba34c8519f--
############################################################

※送れる場合に近い。ヘッダのContent-Typeをmixedにすれば送れそう。

という事で、ヘッダのContent-Typeを変更できる方法を調べています。
分かる方いらっしゃいましたら教えてください。


引用返信 編集キー/
■45392 / inTopicNo.8)  Re[7]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ もりお (161回)-(2010/01/11(Mon) 23:18:17)
No45369 (アキ さん) に返信
> ヘッダのContent-Typeを変更できる方法を調べています。

直接書き換える方法はありません。
MailMessage.Attachments に1つ以上アイテムがセットされていれば
multipart/mixed になります。

Body と画像の両方を Attachments にセットすると、近い形にはなりましたが
空の Body が自動的に追加されるようで、メールがうまく表示されるかは怪し
い感じです。

Content-Type: multipart/mixed; boundary=--boundary_0_e905a429-4a1a-4b7e-b928-b0386ea1d0f9

----boundary_0_e905a429-4a1a-4b7e-b928-b0386ea1d0f9
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable


----boundary_0_e905a429-4a1a-4b7e-b928-b0386ea1d0f9
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

本文
----boundary_0_e905a429-4a1a-4b7e-b928-b0386ea1d0f9
Content-Type: image/jpeg; name=ImageFileName
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMD


System.Net.Mail 名前空間のクラスではおそらく完全な対応は出来ないです。
旧形式ではありますが System.Web.Mail 名前空間のクラスを利用してみては
いかがでしょうか。
.NET Framework クラス ライブラリ
    SmtpMail.Send メソッド (MailMessage)
http://msdn.microsoft.com/ja-jp/library/9b46af9f.aspx

一応こんなメールを送信することが出来ました。

Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_0000_01CA930C.F8EEA340"

------=_NextPart_000_0000_01CA930C.F8EEA340
Content-Type: text/plain;
	charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

Body
------=_NextPart_000_0000_01CA930C.F8EEA340
Content-Type: image/jpeg;
	name="test1.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="test1.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEA

引用返信 編集キー/
■45450 / inTopicNo.9)  Re[8]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ アキ (13回)-(2010/01/13(Wed) 12:32:09)
もりおさん、ありがとうございます。

> 旧形式ではありますが System.Web.Mail 名前空間のクラスを利用してみては
> いかがでしょうか。

確かにこの方法なら目的の形式になりそうです。
しかし、今回本文のデータをMemoryStreamのままセットしなくてはいけません。
(絵文字対応のため)
そのためにAlternateViewを使用していたのですが、この方法ではそれと同様の
処理ができそうにありません。。。

自作のSMTPクライアントを実装し使用しているという記事を見たことありますが、
そのようにしないとできないんでしょうか。。。
引用返信 編集キー/
■45479 / inTopicNo.10)  Re[9]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ もりお (162回)-(2010/01/13(Wed) 19:05:53)
No45450 (アキ さん) に返信

> この方法ではそれと同様の
> 処理ができそうにありません。。。

あら、ダメでしたか。
 
> 自作のSMTPクライアントを実装し使用しているという記事を見たことありますが、
> そのようにしないとできないんでしょうか。。。

1からメール送信プログラムを作るのはいささか現実的ではない気がします。
外部ライブラリを検討してみてはいかがでしょうか。
使ったことが無いので仕様を満たすかわかりませんが。

Exwarp
http://exwarp.com/

Secure Mail
http://www.grapecity.com/japan/support/database/p7_370.htm

引用返信 編集キー/
■45597 / inTopicNo.11)  Re[10]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ アキ (14回)-(2010/01/15(Fri) 13:29:16)
もりおさん、いつもありがとうございます。
色々と検討、検証した結果、下記のサイトのサンプルPGを参考に
自前のSMTPクライアントを作成しました。
http://www.cutt.co.jp/book/4-87783-126-6.html

丁寧にご返答いただき、非常に感謝いたしております。
どうもありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -