J'ai essayé d'intégrer le code icalendar dans un e-mail à envoyer via indy avec un type de contenu texte/calendrier mais il se bloque sur l'encodage de l'e-mail lorsque j'ajoute en pièce jointe il arrive juste en pièce jointe et ne demande pas comme d'autres demandes de calendrier. Quelqu'un at-il un exemple de code sur la façon de faire des demandes de calendrier via indy?Comment envoyer un e-mail avec une requête de calendrier (type de contenu: texte/calendrier)
5
A
Répondre
4
Voici une alternative à l'exemple de RRUZ:
program SendMailWithCalendarRequest;
{$APPTYPE CONSOLE}
uses
IdSMTP,
Classes,
DateUtils,
IdMessage,
SysUtils;
procedure SendCalendarRequest;
var
SMTP : TIdSMTP;
MailMessage : TIdMessage;
begin
SMTP:= TIdSMTP.Create(nil);
MailMessage := TIdMessage.Create(nil);
try
SMTP.Host := 'smtp.mailserver.com';
SMTP.Port := 25;
SMTP.Username := 'the account';
SMTP.Password := 'the password';
SMTP.AuthType := satDefault;
MailMessage.From.Address := '[email protected]';
MailMessage.Recipients.EMailAddresses := 'the Recipient';
MailMessage.Subject := 'Send calendar';
MailMessage.Body.Add('BEGIN:VCALENDAR');
MailMessage.Body.Add('VERSION:1.0');
MailMessage.Body.Add('BEGIN:VEVENT');
MailMessage.Body.Add('ORGANIZER:MAILTO:'+SenderMail);
MailMessage.Body.Add('DTStart:'+FormatDateTime('YYYY-DD-DD',Now));
MailMessage.Body.Add('DTEnd:'+FormatDateTime('YYYY-DD-DD', Tomorrow));
MailMessage.Body.Add('Location;ENCODING=QUOTED-PRINTABLE: My home');
MailMessage.Body.Add('UID:'+FormatDateTime('YYYY-DD-DD',Now)+FormatDateTime('YYYY-DD-DD', Tomorrow));
MailMessage.Body.Add('SUMMARY:Appointment Reminder');
MailMessage.Body.Add('DESCRIPTION:Test message');
MailMessage.Body.Add('PRIORITY:5');
MailMessage.Body.Add('END:VEVENT');
MailMessage.Body.Add('END:VCALENDAR');
MailMessage.ContentType := 'text/calendar';
SMTP.Connect;
try
try
SMTP.Send(MailMessage) ;
Writeln('OK')
except on E:Exception do
Writeln(0, 'ERROR: ' + E.Message) ;
end;
finally
SMTP.Disconnect;
end;
finally
SMTP.Free;
MailMessage.Free;
end;
end;
begin
try
SendCalendarRequest;
readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
4
@ David, le client de messagerie reconnaîtra comme une demande de calendrier de la pièce jointe si vous définissez la propriété sur ContentType:='text/calendar'
, voir ce lien pour le iCalendar format Specification
voir cet exemple de code (testé en Delphi 2010)
program SendMailWithCalendarRequest;
{$APPTYPE CONSOLE}
uses
IdSMTP,
Classes,
DateUtils,
IdAttachmentFile,
IdMessage,
SysUtils;
procedure SendCalendarRequest;
var
SMTP : TIdSMTP;
MailMessage : TIdMessage;
Calendar : TStrings;
CalendarFile: String;
Attachment : TIdAttachmentFile;
SenderMail : String;
begin
SenderMail:='[email protected]';
CalendarFile:=ExtractFilePath(ParamStr(0))+'\appmnt.vcs';
Calendar:=TStringList.Create;
try
Calendar.Add('BEGIN:VCALENDAR');
Calendar.Add('VERSION:1.0');
Calendar.Add('BEGIN:VEVENT');
Calendar.Add('ORGANIZER:MAILTO:'+SenderMail);
Calendar.Add('DTStart:'+FormatDateTime('YYYY-DD-DD',Now));
Calendar.Add('DTEnd:'+FormatDateTime('YYYY-DD-DD', Tomorrow));
Calendar.Add('Location;ENCODING=QUOTED-PRINTABLE: My home');
Calendar.Add('UID:'+FormatDateTime('YYYY-DD-DD',Now)+FormatDateTime('YYYY-DD-DD',Tomorrow));
Calendar.Add('SUMMARY:Appointment Reminder');
Calendar.Add('DESCRIPTION:Test message');
Calendar.Add('PRIORITY:5');
Calendar.Add('END:VEVENT');
Calendar.Add('END:VCALENDAR');
Calendar.SaveToFile(CalendarFile);
finally
Calendar.Free;
end;
SMTP:= TIdSMTP.Create(nil);
MailMessage := TIdMessage.Create(nil);
try
SMTP.Host := 'smtp.mailserver.com';
SMTP.Port := 25;
SMTP.Username:='the account';
SMTP.Password:='the password';
SMTP.AuthType:=satDefault;
MailMessage.From.Address := SenderMail;
MailMessage.Recipients.EMailAddresses := 'the Recipient';
MailMessage.Subject := 'Send calendar';
MailMessage.Body.Text := '';
Attachment:=TIdAttachmentFile.Create(MailMessage.MessageParts, CalendarFile) ;
Attachment.ContentType:='text/calendar';//set the content type to text/calendar
try
try
SMTP.Connect;
SMTP.Send(MailMessage) ;
Writeln('OK')
except on E:Exception do
Writeln(0, 'ERROR: ' + E.Message) ;
end;
finally
if SMTP.Connected then SMTP.Disconnect;
end;
finally
SMTP.Free;
MailMessage.Free;
end;
end;
begin
try
SendCalendarRequest;
readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Questions connexes
- 1. Envoyer une requête de type de contenu multipart/form-data
- 2. Comment envoyer un email avec PHP?
- 3. Comment envoyer un email avec django-registration?
- 4. Comment puis-je envoyer/email en utilisant le calendrier quartz
- 5. Comment envoyer un objet JSON via une requête avec Android?
- 6. Comment envoyer un email de jsp/servlet?
- 7. Envoyer un email à email ID
- 8. Comment envoyer du contenu html via une requête ajax?
- 9. Envoyer un email dans wordpress
- 10. Comment envoyer un lien avec des valeurs dans un email?
- 11. comment envoyer un email avec un graphisme via php
- 12. anonymement envoyer un email de javamail
- 13. Envoyer un email par l'intermédiaire de GoDaddy
- 14. Comment envoyer un logcat par email?
- 15. comment envoyer un email avec pièce jointe dans vb.net? ?
- 16. envoyer un email à localhost
- 17. Comment envoyer un email avec cette bibliothèque IMAP
- 18. php envoyer plusieurs pièces jointes avec email
- 19. comment envoyer un email via smartermail?
- 20. Comment envoyer un email dans Android?
- 21. Comment envoyer un email gmail avec asp.net - C#?
- 22. envoyer un email via une application de cacao
- 23. Comment comparer une date de mysql avec la date actuelle et envoyer une notification email
- 24. Comment envoyer une requête HEAD avec HtmlUnit?
- 25. Email contenu de Asp.Net page
- 26. Comment envoyer un email de UIWebView dans iPhone?
- 27. comment envoyer un email dans le SDK de l'iphone?
- 28. PHPMailer: envoyer un email .... demander un reçu?
- 29. Envoyer un e-mail à DISTINCT email
- 30. Comment envoyer un email avec une pièce jointe en utilisant PHP?
Merci, j'ai couru genre de programme RRUZ de travaillé dans gmail, mais les perspectives lors de la récupération du courrier électronique j Le premier se termine. Plus spécifique. Le service auto envoie un email depuis le serveur en utilisant Indy chaque email a une partie texte/plain, la partie texte/html et éventuellement des pièces jointes. Cela fonctionne bien. En essayant d'incorporer le ical à la fin semblable à l'exemple avec le contenu text/calendar; method = demande en tant que partie finale le programme se fige après l'encodage du message pour les premières parties mais un problème sur la partie calendrier. Le message se comporte comme si un texte/plaine avec les chaînes de l'ical et le contenu comme mentionné. –
Ensuite, vous ne remplissez probablement pas le message TIdMessage correctement, s'il vous plaît montrer votre code actuel. –
mon code ci-dessous, la partie ajoutée est la dernière après les pièces jointes ect Procédure Emailer.BuildCalendar (Msg_In: TIdMessage); var s: TStrings; const TAB = # 9; begin try s: = TStringList.Crée; s.Add ('BEGIN: VCALENDAR'); ... autres lignes ajoutées ici ..... s.Add ('END: VCALENDAR'); // Créer les parties du calendrier avec TIdText.Create (Msg_In.MessageParts, s) faire begin ContentType: = 'text/calendar; method = "DEMANDE"; jeu de caractères = "UTF-8" '; Partie Parent: = 0; // IdText.CharSet end; enfin s.free; fin; fin; .... avec des remerciements –