【Delphi】 Indyコンポーネント 【C++Builder】
934 :
デフォルトの名無しさん:2009/10/24(土) 18:26:12
>>923 Indyよくわからないが
Charset := 'iso-2022-jp';
入れないとだめだと思うが
Indyのメールのキャラクターのプロパティを探して
935 :
デフォルトの名無しさん:2009/10/24(土) 18:46:54
>>923 https://forums.embarcadero.com/thread.jspa;jsessionid=F5CF939FFE16FA427099B8511D4B9A6B?messageID=118505 これってずばりじゃないかな
-- Code --
var
Subject, Body, Host, MailTo, MailFrom: String;
begin
Host := 'smtp.....';
MailTo := 'to@....';
MailFrom := 'from@...';
Subject := 'テストです';
Body := Subject;
IdSMTP1.QuickSend(Host, Subject, MailTo, MailFrom, Body, 'text/plain', 'ISO-2022-JP', '7bit');
end;
936 :
932:2009/10/24(土) 19:42:55
937 :
932:2009/10/24(土) 19:45:36
>>934 コレ入れると何故かすべて文字化けするんです…泣
938 :
932:2009/10/25(日) 06:28:46
>>935 QuickSendだと認証が通らないです。
また、送信時に各設定文字列(宛先アドレス)などが
文字化けしてエラーとなってしまいます。
QuickSendのパラメーターも変更されているようで、
Body以降は不要となっています。
困りました…
939 :
932:2009/10/25(日) 08:17:56
下記のように一旦旧Delphiの様にSJISに変換したらうまくいきました。
type
ISO2022JP = type AnsiString(50220); //iso-2022-jp
SHIFTJIS = type AnsiString(932); //SHIFT-JIS
var
Msg : TIdMessage;
AnsiStr2022JP : ISO2022JP;
AnsiStrSJIS : SHIFTJIS;
begin
Msg := TIdMessage.Create(SMTP);
Msg.Date := now - StrToTime('9:00:00');
Msg.ContentType := 'text/plain';
Msg.CharSet := 'ISO-2022-JP';
Msg.ContentTransferEncoding := '7bit';
Msg.From.Name := usr_name; //unicodeのままで文字化けしない
Msg.From.Address := jConvert.CreateHeaderString2(usr_mailaddress);
Msg.Recipients.EMailAddresses := MailAddress
Msg.Subject := SubjectStr; //unicodeのままで文字化けしない
//本文 unicode→SHIFT-JIS→ISO-2022-JP→unicode
AnsiStrSJIS := tblDM.FieldByName('MSG').AsString;
AnsiStr2022JP := AnsiStrSJIS;
Msg.Body.Text := AnsiStr2022JP;
940 :
デフォルトの名無しさん:2009/10/28(水) 19:11:20
TIdHttpServerでダイジェスト認証を行いたいのですが、
どなたかご教授願えませんでしょうか?
調べても方法が見つからず困っています。
code932 = SJIS だな
はじめから答えは判明していたな
Tiburon用 Indy10の SMTP 12月に入ってからのリビジョンは
日本語のSubjectが化けるね。
IdCoderHeader.pas あたりが大幅に書き換えられていて、
ヘッダーのエンコードがバグってる模様。 ソース追っかけてたけど面倒になって
やめた。
rev3878に戻すとSubjectも正常に送れるんで戻した。
943 :
942:2009/12/23(水) 11:04:19
化けると書いたけど、実際はエンコード自体がうまく機能せず空文字列になるんだった。
ISO-2022-JPだとSubjectが長いと途中から文字化けするな。
MIMEエンコードして複数行になった場合、二行目以降に
エスケープ文字が付加されていないためのようだ。
Subject全体をBase64変換して単純に76文字でぶった切ってる
せいか・・・
945 :
デフォルトの名無しさん:2009/12/23(水) 17:25:42
Indyの日本語処理は昔からバグだからけ。
TIdMessageは、はっきり言って使えない。
くだスレからきました。
ここを見て何となくIndyを使ったフォームの内容の受信は
何とかなるなと思ったんですが、その内容をメールで送りたいのですが、
sendmailとか無くてもIndyでやれますか?
やれる。
>>946 とりあえず、メールの仕組みを勉強した方がいいと思う。
ちゃんと知らないと、いつかどこかで、はまるよ。
949 :
946:2010/01/14(木) 09:06:39
>>947,948
レス、有り難うございます。
windowsの自宅サーバーでsendmane等を使いたくない場合に
どうしたら良いんだろうと思い質問させてもらいました。
昨日、メールを送るCGIについて自分なりに調べた結果、
もしIndyで出来るとすると自分が使っているプロバイダーのメール設定
と同じような設定をするものがあるってことですよね?
自分は
>>1の状態なので、また質問させてもらいます。
よろしくお願いします。
950 :
946:2010/01/15(金) 00:35:48
いまいちよくわからんのだが
そのsendmaneとやらを自作するというだけのことだよね?
レス、有り難うございます。
> そのsendmaneとやらを自作するというだけのことだよね?
確かに、そう言われればそういうことですね。
今日一日中、IdsmtpのQuickSendでメールを送るテストをしていたのですが、
メールサーバーがSMTP認証がない単純な設定の場合は
送れるのですが、CRAM_MD5のSMTP認証が必要な場合に
タイムアウトでサーバーに接続できないとエラーが出てしまいます。
IdSMTP.AuthenticationType:=atLogin;
IdSMTP.Password:='hogehoge';
IdSMTP.Username:='hogeyama';
IdSMTP.Port:=587;
こんな感じで設定しているのでが他にもあるのでしょうか。
954 :
946:2010/01/17(日) 00:26:07
Indy10でSMTP認証できるようになりました。
有り難うございました。
今回、9から10に入れ替えたのですが、プログラムを実行して
タイムアウトエラー等が起きると、そのエラーに関係すると思われる
リソースがないと言うダイアログが出て、Idhogehoge.pasはどこにある?
みたいに聞かれるんですが、これが出ないように設定って出来るのでしょうか?
pasファイルがあるところに、ライブラリパスを通しても駄目っだった気がして。
>>954 ブラウザ検索パスの設定にIndyのソースのパスを設定
indy10について質問です。
10にしたら「要求したパッケージIndyがありません」という
サンプルプログラム(自作以外のもの)をコンパイルできなくなりました。
自作でIndyのコンポーネントを置いたものはコンパイルできます。
これってどうしたら回避できますか?
Indy10にIdsysってある?
IdSys.pasはないね。
959 :
957:2010/01/25(月) 09:18:49
>>958 dです。
なんか10にしてから調子よくないや
ちなみにIndy9にもIndy8にもIdSys.pasはない。
>ちなみにIndy9にもIndy8にもIdSys.pasはない
そうですか。じゃぁなんなんだろ。
>>956の現象も起きるし。
マジ>1状態。
アララットに移行しましょう
>961
状況をもっと正確に書け。
964 :
961:2010/01/27(水) 23:56:25
有り難う。お言葉に甘えて書かせてもらいます。
xamppで自宅鯖を立てました。
xamppに入ってるsendmailの最新版にdel7のソースが付いてる
というのをxamppスレで見て早速見てみた。
読み込みは何ともなかったんだけど、コードの定義を見ようとすると
Idsysが無いとか、Indyのパッケージがないとか色々出てモヤモヤしてます。
Idsysは作者がわざとソースから削除してる可能性もあると思いますが、
Indyのパッケージが無いと言われるのは、今後サンプルとかをいじる時に
困るだろうなぁと思って凹んでます。
長文失礼しまた。
>964
> 読み込みは何ともなかったんだけど、コードの定義を見ようとすると
> Idsysが無いとか、Indyのパッケージがないとか色々出てモヤモヤしてます。
いやだから正確に書けっての。エラーメッセージとか、ソースどっから落としたのかとか。
そう言うことですか。
何度もすみません。&有り難うございます。
確認して夜に書き込みさせてもらいますので
気が向いたら、よろしくお願いします。
あほすぎ
なにやら盛り上がってる?
indy9から10に変更して、9で作ったプログラムをコンパイルしたら
IdSSLOpenSSLHeaders.pas(11194): 'Array' と 'Char' には互換性がありません
て、出たんだけどどうしたらいい?
やってることは、IdHttpをcreateしてGetプロシージャーで
ホームページ上のデータを取ってきてるだけなんだけど。
970 :
969:2010/02/08(月) 10:14:28
コンパイルエラーの出る場所です。
function IdSslSessionGetIdCtx(s: PSSL_SESSION; id: PPChar; length: PIdC_INT) : TIdC_UINT;
{$IFDEF USEINLINE} inline; {$ENDIF}
begin
Assert(s<>nil);
id^ := @s.sid_ctx; <---ここが駄目って出る
Result := s.sid_ctx_length;
Length^ := Result;
end;
うちのソースだと、そこんところは
{function IdSslSessionGetIdCtx(s: PSSL_SESSION; id: PPAnsiChar; length: PIdC_INT) : TIdC_UINT;
{$IFDEF USEINLINE inline; {$ENDIF
begin
Assert(s<>nil);
id^ := @s.sid_ctx;
Result := s.sid_ctx_length;
Length^ := Result;
end; }
って丸ごとコメントアウトされてるよw
頭んところも
//function IdSslSessionGetIdCtx(s: PSSL_SESSION; id: PPAnsiChar; length: PIdC_INT) : TIdC_UINT;
なってる
有り難うございます。
さっき、Indyのサイト行ってバージョン確認したら
最新のをインスコしてるんですがどういうことだろう。
973 :
971:2010/02/08(月) 17:57:54
>>973 有り難うございます。
私はのはD7で、D8にして絶望したのでそのままです。
Indy10でメール送信プログラムを作っています。
とりあうえず送信はできるようになったんですが大きな添付ファイルの
送信中に、それを中止する方法がうまくいきません。
IdSMTP.Disconnect では止まってくれず、IdSMTP.IOHandler.Close で
強引にSocketを切ってやれば止まることは止まるけど例外が発生する orz
TIdFTPなんかだとAbortメソッドがあるみたいだけど、TIdSMTPにはないし…
IdSMTP.Sendは IdThreadCompornent使って別スレッドで動かしてます。
了解しました
次の方どうぞ
}{
`
-
]
\
@