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

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

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

Re[1]: C#でau携帯に、絵文字をHTMLメールにて送信したい


(過去ログ 64 を表示中)

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

■37247 / inTopicNo.1)  C#でau携帯に、絵文字をHTMLメールにて送信したい
  
□投稿者/ hiro4110 (1回)-(2009/06/16(Tue) 10:31:49)

分類:[C#] 

はじめまして。hiro4110と申します。

C#でau携帯に、絵文字をHTMLメールにて送信したいのですが、
一部の絵文字は送信できるようになったのですが、
AUのE-MAIL送出用S-JISの絵文字CDの頭2ケタが(EB〜EC)の絵文字が、すべて「・」になって、送信されてしまいます。

これらの絵文字も送れるようにしたいのですが、
どなたか絵文字・C#に詳しいかたいらっしゃいましたら、是非教えて下さい。

−−−−−−−−−−−−−−−−−−
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net.Sockets;
using System.IO;
using System.Net.Mime;


namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Send_JIS_Mail();
}

static string Enco(int code) //S-JIS 変換
{
byte[] data = { (byte)(code / 256), (byte)(code % 256) };
return System.Text.Encoding.GetEncoding(932).GetString(data);
}

private static string myEncode(string str, Encoding enc) //base64 変換
{
string base64str = Convert.ToBase64String(enc.GetBytes(str));
return string.Format("=?{0}?B?{1}?=", enc.BodyName, base64str);
}

private static void Send_JIS_Mail()
{
SmtpClient smtp = new SmtpClient();
MailMessage msg = new MailMessage();
Encoding myEnc = Encoding.GetEncoding("iso-2022-jp");

// 送信元
msg.From = new MailAddress(
"XXXXXXXXXXXXXXXX@co.jp", myEncode("送信元", myEnc));
// 送信先
msg.To.Add(new MailAddress(
"XXXXXXXXXXXXXXX@ezweb.ne.jp", myEncode("送信先", myEnc)));
// 件名
msg.Subject = myEncode("件名", myEnc);

msg.IsBodyHtml = true;

// TEXTメール本文
msg.Body = "こんにちわ!!";

// HTMLメール本文
string sBody =
"<html><body bgcolor = \"#ffff00\">" +
"<div>絵文字⇒</div>" + Enco(0xEB59) + Enco(0xEB5A) +
"</body></html>";


AlternateView altView =
AlternateView.CreateAlternateViewFromString(
sBody, myEnc, System.Net.Mime.MediaTypeNames.Text.Html);

// Content-Transfer-Encoding: 7bit
altView.TransferEncoding =
System.Net.Mime.TransferEncoding.SevenBit;

// altViewをメッセージに追加
msg.AlternateViews.Add(altView);

// SMTPサーバ
smtp.Host = "XXXXXXXX.co.jp";

try
{
// 送信
smtp.Send(msg);
}

catch (SmtpException exc)
{
// SMTPサーバー接続失敗時のエラー処理
// メッセージは、excですので、それを表示してもOK。
}

//後始末
msg.Dispose();

}
}
}
引用返信 編集キー/
■37272 / inTopicNo.2)  Re[1]: C#でau携帯に、絵文字をHTMLメールにて送信したい
□投稿者/ biac (130回)-(2009/06/16(Tue) 14:40:23)
biac さんの Web サイト
> C#でau携帯に、絵文字をHTMLメールにて送信したいのですが、

au携帯が絵文字を受け取ることのできる文字エンコーディングは何ですか?


> static string Enco(int code) //S-JIS 変換
> {
> byte[] data = { (byte)(code / 256), (byte)(code % 256) };
> return System.Text.Encoding.GetEncoding(932).GetString(data);
> }

バイト配列に Shift JIS の文字コードが入っているものとして、 Unicode に変換… と φ(..;


> Encoding myEnc = Encoding.GetEncoding("iso-2022-jp");

> // HTMLメール本文
> string sBody =
> "<html><body bgcolor = \"#ffff00\">" +
> "<div>絵文字⇒</div>" + Enco(0xEB59) + Enco(0xEB5A) +

> AlternateView altView =
> AlternateView.CreateAlternateViewFromString(
> sBody, myEnc, System.Net.Mime.MediaTypeNames.Text.Html);

…それを iso-2022-jp に変換して AlternateView に格納 φ(..;

>
> // Content-Transfer-Encoding: 7bit
> altView.TransferEncoding =
> System.Net.Mime.TransferEncoding.SevenBit;

…それを 7bit データとして送信 φ(..;

ようするに、
Shift JIS → Unicode → iso-2022-jp
という文字エンコーディングの変換をやってますけど。
そのすべての過程で、「絵文字」 は変換可能であることを確認しましたか?

どこかの過程で変換不能ならば、 あきらめてください。 最初から最後までバイト配列のまま扱ってあげるしかありません。
やったことはないんだけど、 AlternateView を作るときに MemoryStream として渡してあげれば出来るんじゃないかなぁ。
http://d.hatena.ne.jp/babydaemons/20090214/1234603379


# そのうち Unicode で絵文字が扱えるようになるかもしれませけどね (--;
http://japan.cnet.com/column/pers/media/story/0,2000058034,20389042,00.htm
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -