http://exwarp.com
お問い合わせ先
info@exwarp.com
ホーム
製品情報ページへ
ショッピングカートへ
ライブラリ価格表ページへ
メンバー登録ページへ
特定商取引法に基づく表記
テクニカルブログへ

RFC822ライブラリ
MIMEライブラリ
メールメッセージライブラリ
MIMEメディアタイプ変換ライブラリ
POP3メール受信ライブラリ
SMTPメール送信ライブラリ

ログイン

現在の状態:

ログインしていません。

メールアドレスを入力してください
パスワードを入力してください.
メンバー登録はこちらから

更新履歴

2013/4/7

最近ExwarpMailKitをご購入いただいたお客様のご感想を掲載しました。 詳細は、導入事例をご覧下さい。

2009/3/2

Exwarp MailKit 1.0.438.* をリリースしました。
今回のリリースより、SmtpExtensionおよびEmojiModuleを同梱した新パッケージとなり、価格は¥25,000-と改定いたしました。
携帯デコメールや、大量メール送信の時間短縮などの魅力的な機能が標準で使えるパッケージとなっております。微細な仕様変更・バグ修正も行っており、より安定したメール送信を実現いたしました。
すでに製品版をお買い上げいただいたお客様は無料で新パッケージに移行していただけます。
購入時のURLとID/PASSでmailkit.zipをダウンロードしてください。

2008/10/4

ExwarpMailKit1.0.421.*公開のお知らせ
ExwarpMailKitがバージョンアップしました。
新しい機能として、バイナリデータ(2バイト限定)の挿入に対応しました。
同時にリリースされた絵文字拡張モジュールを使用するためにはこのバージョンへのバージョンアップが必要です。


exWarp Blog
サンプルコードの実行には、Exwarp MailKitが必要です。こちらから無料でダウンロードできます。
記事の一覧| 全表示
フィード RSS


Add to google

携帯絵文字付メールを送信する

ExwarpMailKit1.0.438.*以降のライブラリ+Exwarp.Module.EmojiModuleを利用すると、絵文字を簡単に作成することができます。


最新版をダウンロードしてください。


[C#]
Exwarp.Net.RFC.MIME.MIMETransform.RawEncoding = true; //(0)

Exwarp.Net.Mail.MailMessage mail = new Exwarp.Net.Mail.MailMessage(System.Text.Encoding.ASCII); //(1)

Exwarp.Module.ModuleLoader ml = new Exwarp.Module.ModuleLoader(mail); //(2)
ml.LoadModule("Exwarp.Module.EmojiModule.dll"); //(3)

mail.To = "mail_to@docomo.ne.jp"; //(4)
mail.From = "mail_from@myhost.com";

mail.RunCommand("Emoji_SetSubject","<emoji:1>絵文字メール"); //(5)
mail.RunCommand("Emoji_SetBody","<emoji:100>絵文字本文"); //(6)

Exwarp.Net.Smtp.SmtpClient client = new Exwarp.Net.Smtp.SmtpClient("HOST_NAME");
if(client.Connect())
{
  client.SendReceive(mail);
  client.Close();
}

[VB.NET]
Exwarp.Net.RFC.MIME.MIMETransform.RawEncoding = True '(0)

Dim mail As New Exwarp.Net.Mail.MailMessage(System.Text.Encoding.ASCII) '(1)

Dim ml As New Exwarp.Module.ModuleLoader(mail) '(2)
ml.LoadModule("Exwarp.Module.EmojiModule.dll") '(3)

mail.To = "mail_to@docomo.ne.jp" '(4)
mail.From = "mail_from@myhost.com"

mail.RunCommand("Emoji_SetSubject","<emoji:1>絵文字メール") '(5)
mail.RunCommand("Emoji_SetBody","<emoji:100>絵文字本文") '(6)
Dim client As New Exwarp.Net.Smtp.SmtpClient("HOST_NAME")
If client.Connect() Then
  client.SendReceive(mail)
  client.Close()
End If

[解説]
(0)Exwarp.Net.RFC.MIME.MIMETransformのRawEncodingプロパティにTrueをセットします。
これは、1.0.438より前のバージョンでau携帯への絵文字付の件名が表示されないバグに対処するために必要です。

(1)Exwarp.Net.Mail.MailMessageのインスタンスを作成します。このときのエンコーディングは何でもOKです。

(2)Exwarp.Module.ModuleLoaderのインスタンスを作成します。このときパラメータにモジュールを追加したいMailMessageインスタンスを渡します。

(3)LoadModuleメソッドを呼び出して、モジュールをロードします。
モジュールdllへのパスを表す文字列をセットします。実行ファイルと同じディレクトリにコピーしておくとファイル名だけで済むのでお勧めです。(別にモジュールの位置はどこでも構いません。参照を追加しておく必要もありません。)

(4)必ず最初にMailMessageToプロパティをセットしておきます。この値を元に絵文字データが変換されます。

(5)モジュールをロードするとEmoji_SetSubjectカスタムオペレーションが実行できるようになります。通常の文字列の任意の場所に<emoji:***>と記述すると内部でバイナリに自動変換します。(***の部分はdocomoの絵文字番号を入力します。)

(6)(5)と同じ要領でEmoji_SetBodyカスタムオペレーションを実行します。絵文字の挿入方法は同じです。

あとは通常のメール送信を行います。特別な操作は必要ありません。


追加事項

Emoji_SetSubjectおよびEmoji_SetBodyカスタムオペレーションに2番目の引数をセットすることができます。これは任意の絵文字変換テーブルファイルへのパスを表す文字列です。
mail.RunCommand("Emoji_SetBody","<emoji:1>","MyEmojiTable.txt")

上の様に記述すると、デフォルトの変換テーブルではなく、自由にカスタマイズした変換テーブルを使って絵文字の変換が行われます。
デフォルトの変換テーブルは、こちらからダウンロードできます。
絵文字コードは必ず半角大文字の英数4桁タブ区切りで記述します。
docomo,softbankは必ずShift-JISバイナリ用コード、auはEメール送出用JISコードに対応したShift-JISコードを記述します。
176以上の番号を設定することも可能ですが、上限は999です。


注意事項

メールの宛先はひとつに限定するか、同じキャリアのメールアドレスを設定してください。
絵文字によっては表示されないものがあります。これはdocomoの絵文字番号を元にほかのキャリアの絵文字の中からよく似た絵文字に変換しているためで、該当する絵文字が存在しない番号は欠番となります。
2009/03/02 15:09:06更新
カテゴリ:Exwarp MailKit マニュアル

【質問】ExwarpMailKitの携帯端末対応について

ExwarpMailKitの携帯端末対応について:

■携帯端末宛のHTMLメールについて
ExwarpMailKitでは、テキスト形式とHTML形式のメール本文を混在させることが可能ですので、携帯端末にHTML形式の本文でメールを作成することも可能です。
ただし、HTML形式の本文に関しましては、Content-Transfer-Encodingの値が強制的にQuoted-Printableになる仕様となっておりますので、Base64や7bitでのエンコードを要求するメーラーでは正常に読むことができない可能性もあります。

■携帯端末宛の絵文字メールについて
ExwarpMailkitではメール本文にバイナリコードを挿入する機能はございません。そのため、絵文字などバイナリで入力する必要のある一部キャラクタにつきましては現在のところ未対応となっております。今後の仕様変更で対応可能としてゆく予定ですがリリース次期などは未定です。
2008/09/09 21:33:48更新
カテゴリ:Exwarp MailKit マニュアル

【質問】メールの送信時間を指定するにはどうすればよいですか?

送信時間を指定するには、Exwarp.Net.Mail.MailMessageクラスのDateプロパティに日付情報を文字列で設定します。
[C#]
mail.Date = "9 Sep 2008 17:00:00 +0900";

[VB.Net]
mail.Date = "9 Sep 2008 17:00:00 +0900"

[解説]
mailはExwarp.Net.Mail.MailMessageのインスタンスをあらわします。設定値はRFC 1123準拠の文字列型である必要があります。
+0900でタイムゾーンを設定しない場合GMT(世界標準時)で解釈される場合があります。
2008/09/09 19:00:57更新
カテゴリ:Exwarp MailKit マニュアル

【質問】1件づつメールをサーバより削除する方法はどのようにするのでしょうか?

メールをどのタイミングで削除するのかにより、手順が異なりますが以下の2通りの場面について解説いたします。

■メールの受信と同時にメールをサーバーから削除する
この場合、Exwarp.Net.Pop3.Pop3ClientオブジェクトのReceiveAllMessages()メソッドを実行する際のパラメータ値にtrueを指定することで、メールの受信と同時に削除を実行できます。
詳しくはこちらの記事を参照ください。

■メールの受信とは別にサーバーからメールを削除する
この場合、こちらにカスタムオペレーションのソースコードを公開しておりますので、ご参考になってください。
本カスタムオペレーションを実行すると、メールサーバーからすべてのメールを1件ずつ削除することができます。削除するメールを判別しながら削除するなどの処理を実行したい場合は、ソースコードに必要な条件式を入力していただくことで対応可能です。
2008/02/16 17:08:05更新
カテゴリ:Exwarp MailKit マニュアル

【質問】1行の文字数を設定してMIMEエンコードしたメール本文を、Exwarp.Net.Mail.MailMessageオブジェクトを用いて送信できますか?

通常、メール本文にMIMEエンコードを行うことはありません。
メール本文は、Content-Typeヘッダーフィールドにcharsetが指定されている場合、その文字セットでエンコードされたバイト列で記述されます。
例外として、charsetで指定されている文字セットが8ビットエンコーディングの場合には、base64やquoted-printableという方法で7ビット化したバイト列を記述します。
ExwarpMailKitには現在のところ、本文の1行の文字列を調整する機能は実装しておりません。ただし、前述のbase64については、76文字を超えないように自動的に調整されます。
2008/01/27 14:07:01更新
カテゴリ:Exwarp MailKit マニュアル

【質問】サブミッションポート(port587)とSMTP AUTHを使った送信は行えますか?

Exwarp.MailKitに含まれるExwarp.Net.Smtpライブラリでは、送信ホストのポート番号を任意に変更することが出来ます。587番ポートを使用して送信するには、

[C#]
Exwarp.Net.Smtp.SmtpClient smtp = new Exwarp.Net.Smtp.SmtpClient(HOST_NAME,587);

[VB.Net]
Dim smtp As New Exwarp.Net.Smtp.SmtpClient(HOST_NAME,587)


のようにコンストラクタの2番目のパラメータに接続したいホストのポート番号を指定します。
SMTP_AUTHにつきましても、PLAIN,LOGIN,CRAM-MD5に対応しております。
ただし、TLSやSSLを利用した暗号化通信には対応しておりませんのでご注意ください。
2007/10/18 10:14:59更新
カテゴリ:Exwarp MailKit マニュアル

メール受信後にPOP3サーバーからメールを削除する

メールの受信後にサーバーからメールを削除したい場合は,ReceiveAllMessages()メソッドに削除パラメータをわたす方法が最も簡単です。
【注意!】削除したメールは二度と元に戻りませんのでご注意ください。
[VB.NET]
client.Connect()
client.ReceiveAllMessages(True)
client.Close()

または、
client.Connect()
client.DeleteAfterReceive = True
client.ReceiveAllMessages()
client.Close()

ちなみに、RunCommand()メソッドを利用する場合は、次のようになります。
client.Connect()
client.DeleteAfterReceive = True
client.RunCommand("ReceiveAllMessages")
client.Close()
解説
clientは初期化済みのExwarp.Net.Pop3.Pop3Clientインスタンスを表します。

Exwarp.Net.Pop3.Pop3Client.ReceiveAllMessages()メソッドは、パラメータを1つ受け取ることができます。
このパラメータは、メールの受信後に受信したメールをサーバーから削除するかどうかのフラグを表し、
内部的には、Pop3Clinet.DeleteAfterReceiveプロパティの値を更新してから受信を実行します。

trueをセットすると、受信後にPOP3サーバーからメールを削除する処理が自動的に実行されます。デフォルトはfalseです。
ReceiveAllMessages()メソッドは、RunCommand("ReceiveAllMessage")のラッパーメソッドとして実装しているため、どちらの方法を採用しても動作に違いはありません。
2007/07/31 17:53:51更新
カテゴリ:Exwarp MailKit マニュアル

メールのメッセージソースを取得する。

RFCMessage及びその派生クラス(MIMEMessageMailMessage)にはMessageSourceプロパティが定義されています。このプロパティの値はByte型の配列ですが、このプロパティの値を取得したり更新したりすることでメッセージソースを簡単に操作できます。


[C#]
byte[] src = msg.MessageSource;
System.Diagnostics.Debug.WriteLine(System.Text.Encoding.ASCII.GetString(src));
[VB.Net]
Dim src() As Byte = msg.MessageSource
System.Diagnostic.Debug.WriteLine(System.Text.Encoding.ASCII.GetString(src))

[解説]

上記サンプルコードのmsgは、RFCMessageの派生クラスのインスタンスを表します。このインスタンスの作り方についてはこちらを参照してください。

MessageSourceプロパティの戻り値をByte型の配列(この場合src)で受け取ります。

取得したバイト列の内容をASCIIエンコーディングで文字列に変換しデバッグウィンドウに表示しています。これでバイト列のイメージが取得できます。ASCIIエンコーディングですから8ビット文字が出てくる場合正常に表示されません。文字化けします。

2007/07/07 12:31:36更新
カテゴリ:Exwarp MailKit マニュアル

メールの添付ファイルを削除する

メールメッセージに含まれる添付ファイルを削除するには、RemoveAttachmentカスタムオペレーションを使用します。今回はすべての添付ファイルを削除するサンプルを紹介します。

[C#]
object atts = mail.RunCommand("GetAttachments");
if(atts != null)
{
    foreach(object att in (System.Collections.IEnumerable)atts)
    {
        mail.RunCommand("RemoveAttachment",att);
    }
}
[VB.Net]
Dim atts() As Object = mail.RunCommand("GetAttachments")

If Not(atts Is Nothing) Then
    Dim att As Object
    For Each att In CType(atts,System.Collections.IEnumerable)
        mail.RunCommand("RemoveAttachment",att)
    Next
End If
解説

mailExwarp.Net.Mail.MailMessageのインスタンスを表します。このインスタンスの取得方法については、こちらを参照してください。

すべての添付ファイルを削除するために、まずGetAttachmentsカスタムオペレーションを使用して、削除対象となる添付メッセージの配列を取得します。この配列を列挙しながら、MailMessageRemoveAttachmentカスタムオペレーションを実行します。

RemoveAttachmentカスタムオペレーションは削除する添付メッセージを表すExwarp.Net.RFC.MIME.MIMEContentMessage型のパラメータを一つ受け取ります。今回はキャストせずにObject型のまま渡しています。

2007/06/21 11:43:06更新
カテゴリ:Exwarp MailKit マニュアル

POP3サーバーからメールを削除せずに新着メールを受信する

Exwarp MailKitのPop3ClientContextプロパティを使用すると、すでに受信済みのメールのUID(ユニークID)を保存することができます。
この機能を利用すると、POP3サーバーからメールを削除せずに、新着メールのみの受信を行なうことができます。
[C#]
Exwarp.Net.Pop3.Pop3Client pc = new Exwarp.Net.Pop3.Pop3Client("POP3_HOST");
pc.User = "POP3_USER";
pc.Pass = "POP3_PASS";
pc.Context = context;
pc.Connect();
pc.ReceiveAllMessages();
pc.Close();

[VB.Net]
Dim pc As New Exwarp.Net.Pop3.Pop3Client("POP3_HOST")
pc.User = "POP3_USER"
pc.Pass = "POP3_PASS"
pc.Context = context
pc.Connect()
pc.ReceiveAllMessages()
pc.Close()

[解説]
POP3_HOSTはPOP3ホスト、
POP3_USERはPOP3ホストへ接続するユーザー名、
POP3_PASSはPOP3ホストへ接続するパスワードをそれぞれ表す文字列定数です。
contextExwarp.Net.Pop3.Pop3Contextのインスタンスを表します。このクラスのインスタンスの生成方法については下部でさらに説明します。

通常のメール受信の前にExwarp.Net.Pop3.Pop3ClientオブジェクトのContextプロパティにExwarp.Net.Pop3.Pop3Contextオブジェクトをセットします。
ContextプロパティにPop3Contextオブジェクトがセットされている場合、Pop3Clientは、受信メールのUIDのリストをPop3ContextUniqueIdListプロパティに追加してゆきます。

Pop3Contextオブジェクトを毎回の受信の前にセットすることで、新着メールのみを受信することができますが、そのためにはPop3Contextオブジェクトをシリアル化(保存)して、次回の受信時に復元しなくてはいけません。
次にExwarp.Net.Pop3.Pop3Contextオブジェクトのシリアル化/デシリアル化を解説します。

以下の例では,contextという変数で表されるExwarp.Net.Pop3.Pop3ContextオブジェクトをC:\context.serというファイルに保存/復元します。(ファイル名及び拡張子はどんな文字列でも構いません。)

Exwarp.Net.Pop3.Pop3ContextクラスはSystem.SerializableAttribute属性が定義されています。ですからこのオブジェクトをフォーマッタを使用してシリアライズ/デシリアイズすることができます。
■シリアライズ方法(保存)
[C#]
System.IO.Stream st = new System.IO.FileStream("c:\\pop3context.ser",System.IO.FileMode.Create);
System.Runtime.Serialization.IFormatter f = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
f.Serialize(st,context);
st.Close();

[VB.Net]
Dim st as New System.IO.FileStream("c:\pop3context.ser",System.IO.FileMode.Create)
dim f As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
f.Serialize(st,context)
st.Close()

[解説]
オブジェクトのシリアル化には、System.Runtime.Serialization.Formatters.Binary.BinaryFormatterクラスを使用します。シリアル化(保存)したいファイルのストリームを表すSystem.IO.Streamとシリアル化したいオブジェクト(context)をSerializeメソッドのパラメータにセットするだけでオブジェクトのシリアル化は完了です。

■デシリアライズ方法(復元)
[C#]
System.IO.Stream st = new System.IO.FileStream("c:\\pop3context.ser",System.IO.FileMode.Open);
System.Runtime.Serialization.IFormatter f = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
Exwarp.Net.Pop3.Pop3Context context = (Exwarp.Net.Pop3.Pop3Context)f.Deserialize(st);
st.Close();

[VB.Net]
Dim st as New System.IO.FileStream("c:\pop3context.ser",System.IO.FileMode.Open)
dim f As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim context As Exwarp.Net.Pop3.Pop3Context = f.Deserialize(st)
st.Close()

[解説]
オブジェクトの復元には、System.Runtime.Serialization.Formatters.Binary.BinaryFormatterクラスを使用します。デシリアイズ(復元)したいファイルのストリームを表すSystem.IO.StreamDeserializeメソッドのパラメータに返すと、ファイルから復元されたオブジェクトが返されます。

この方法でPOP3ホストからメールを削除せずに新着メールのみを取得することができます。
(注意)UIDの値が他のPOP3ホストと重複することがあり得るため、Pop3ContextはPOP3ホストごとに1ファイル作成するようにして下さい。


サンプルコード
[C#]
System.Runtime.Serialization.IFormatter f = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
if(System.IO.File.Exists("c:\\pop3context.ser"))
{
  using(System.IO.Stream st = new System.IO.FileStream("c:\\pop3context.ser",System.IO.FileMode.Open))
  {
    context = (Exwarp.Net.Pop3.Pop3Context)f.Deserialize(st);
  }
}
else
{
  context = new Exwarp.Net.Pop3.Pop3Context();
}

Exwarp.Net.Pop3.Pop3Client pc = new Exwarp.Net.Pop3.Pop3Client("POP3_HOST");
pc.User = "POP3_USER";
pc.Pass = "POP3_PASS";
pc.Context = context;
pc.Connect();
pc.ReceiveAllMessages();
pc.Close();

using(System.IO.Stream st = new System.IO.FileStream("c:\\pop3context.ser",System.IO.FileMode.Create))
{
  f.Serialize(st,pc.Context);
}
2007/05/12 12:34:59更新
カテゴリ:Exwarp MailKit マニュアル

本サイトで公開されるライブラリには著作権があります。
VB.NET/C#/ASP.NETでメール送信・受信ならExwarp MailKit
©exWarp 2006-2013   All Rights Reserved.