BDS2006(C++Builder2006)でメール送信

BDS2006(C++Builder2006)でメールを送信するには、IndyのTIdSMTPを使います。

文字コードをShift_JISからJISに変換するのには、IndyのEncode2022JP()を使いました。

Subjectは自動的にBase64でエンコードしてくれるようです。

AnsiString host = "mail.example.jp";
AnsiString subject = Encode2022JP("メールの件名");
AnsiString to = yamamoto@example.jp";
AnsiString from = yamamoto@example.jp;
AnsiString text = Encode2022JP("メールの本文");
IdSMTP1->QuickSend(__classid(TIdSMTP), host, subject, to, from, text);

ファイルを添付したり、細かいことをしたいときは、TIdMessageを使用する。

TIdSMTP* smtp = new TIdSMTP(this);
TIdMessage* mail = new TIdMessage(this);
try
{
  //件名(Subject)
  mail->Subject = Encode2022JP("メールの件名");
  //差出人(From)
  mail->From->Name = Encode2022JP("山本");
  mail->From->Address = "yamamoto@example.jp";
  //宛先(To)
  TIdEMailAddressItem* item = mail->Recipients->Add();
  item->Name = "山本";
  item->Address = "yamamoto@example.jp";
  //メールの本文(Body)
  mail->Body->Text = Encode2022JP("メールの本文。");

  //添付ファイル
  AnsiString filename = "C:\\サンプル.txt";
  TIdAttachment* attach = new TIdAttachment(mail->MessageParts, filename);
  attach->ContentTransfer = "base64";
  //添付ファイルのファイル名に日本語を含むときはBase64にエンコードする必要がある
  attach->FileName = EncodeHeader(Encode2022JP(ExtractFileName(filename)),
                                  TSysCharSet(), 'B', iso2022jp, "ISO-2022-JP");
  //ファイルにあわせて text/plain image/gif image/jpeg application/octet-stream など
  attach->ContentType = "text/plain";

  //重要度「高」
  mail->Priority = mpHigh;
  mail->ContentType = "text/plain";
  mail->CharSet = "ISO-2022-JP";

  //SMTPサーバー
  smtp->Host = "mail.example.jp";
  //PORT(必要に応じて設定)
  smtp->Port = 25;

  //サーバーに接続して送信
  smtp->Connect();
  smtp->Send(mail);
  smtp->Disconnect();
}
__finally
{
  delete smtp;
  delete mail;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください