2007/5/22 (火) 15:07:11 Syake |
▼ Mr.XRAYさん,Takeさん
思い出したように・・・
結局、Indyは諦めました。(根性無しです)
Synapseでメール送信に変更です。
type TMyMailData = record
FHost :String; //メール送信サーバー
FSubject :String; //件名
FMailTo :String; //送信先のメールアドレス
FFrom :String; //送信者の名前
FUseID :String; //ユーザーID
FPass :String; //ユーザーパスワード
FBody :String; //本文
FUseAddress :String; //送信者メールアドレス
end;
//別に設定
FMailData :TMyMailData;
//===================================================================//
// ライブラリーSynapseによるメール送信
// Synapseライブラリー
// http://www.ararat.cz/synapse/index.htm Synasnap.zip
// 任意のフォルダーに解凍してDelphiのライブラリーに追加
// Uses に SMTPSend, MimeMess, SynaChar, ssl_openssl
// もっとも、最後のはSSL/TLSを使わなかったらいらんか
// OpenSSL(0.9.7)・・・SSL/TLS機能を使用する場合に必要
// デフォルトのままインストールしてねとの事
// http://www.slproweb.com/products/Win32OpenSSL.html
// iconv.dll Jis変換をSynapseが行うのに必要だそうです。
// 実行ファイルと同じディレクトリーへ
// http://www.ararat.cz/synapse/files/contrib/
//===================================================================//
function Txxxx.XXXXX():Integer;
var
SL : TStringList;
hdAttach : string;
Mime : TMimeMess;
SMTP : TSmtpSend;
bRet :Integer;//エラー取得用
begin
bRet := -1;
SL := TStringList.Create;
Mime := TMimeMess.Create;
SMTP := TSmtpSend.Create;
try
//SSL/TLS機能 を実現する為には、モード(FullSSL OR AutoTLS)
//の設定と何やらポートの設定がいるようですが・・・今回は
//SMTP.FullSSL := True; // Explicit モードの場合
//SMTP.AutoTLS := True; // implicit モードの場合
//SMTP.TargetPort := ''; //SSL機能:Synapseでは文字列で指定する
SMTP.UserName := FMailData.FUseID; //ユーザーID
SMTP.Password := FMailData.FPass; //ユーザーパスワード
SMTP.TargetHost := FMailData.FHost; //メール送信サーバー
//SMTP LOGIN します。
if SMTP.Login then
begin
bRet := 0;
SL.Add(FMailData.FBody); //本文
Mime.Header.CharsetCode := ISO_2022_JP;
// 送信者名<送信ルアドレス>形式で記述
Mime.Header.From := FMailData.FFrom + '<' + FMailData.FUseAddress + '>';
Mime.Header.ReplyTo := FMailData.FUseAddress;
Mime.Header.ToList.Add(FMailData.FMailTo);
//Mime.Header.CCList.Add(edtCC.Text);
Mime.Header.Subject := FMailData.FSubject; //JIS変換しない
Mime.AddPartMultipart('', Nil);
Mime.AddPartText(SL,Mime.MessagePart);
//添付ファイルが必要な場合に
//hdAttach := edtAttach.Text;
//if hdAttach <> '' then
// Mime.AddPartBinaryFromFile(hdAttach, Mime.MessagePart);
// MIMEエンコード
Mime.EncodeMessage;
//SMTP.送信
if not SMTP.MailFrom(FMailData.FUseAddress, Length(Mime.Lines.Text)) then
begin
bRet := -2;
end;
if bRet = 0 then
begin
if not SMTP.MailTo(FMailData.FMailTo) then
begin
bRet := -3;
end;
end;
//BCCが必要な場合はこんな感じらしいです・・・(今回はいらん)
{if bRet = 0 then
begin
if not not SMTP.MailTo(edtBCC.Text) then
begin
bRet := -4;
end;
end;}
if bRet = 0 then
begin
if not SMTP.MailData(Mime.Lines) then
begin
bRet := -5; //メールデータを送信できなかった。
end;
end;
end else begin
bRet := -1; //ログオンできなかったよ
end;
finally
if bRet = 0 then
begin
SMTP.Logout;
end;
SL.Free;
Mime.Free;
SMTP.Free;
end;
end;
まあ、何とか送信できたわけですが、SSL/TLS何!?って感じです。
詳しくは
http://codezine.jp/a/default.aspx?cid=313
をどうぞ。(但し、ユーザー登録必要)
|
|