Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

Umlaute und Absender in idMessage

  Alt 8. Feb 2011, 12:02
Bei uns werden aus u.a. historischen Gründen unterschiedliche Mailkomponenten verwendet (z.B. auch für untersch. Delphi-Verionen). Damit die aber alle gleich aussehen, sind diese jeweils in einer einfallsreich TMail genannten Klasse gekapselt.

Ich soll nun diese Kapselung für Delphi 10 mit Indy10-Komponenten durchführen. Benutze dazu die Indykomponenten idMessage und idSMTP und habe bei Testmails schon zwei Probleme:

a) Der Absendername kommt nicht an, obwohl mMn gesetzt.
b) Umlaute im Body werden verschluckt.

Zu b): Wirklich verschluckt, d.h. nicht durch ? oder ähnliches ersetzt. Im Betreff/Subject klappt das aber! Habe schon mit CharSet rumprobiert, aber bisher ohne Erfolg.

Hier mal die initiallisierung von idMessage:

Delphi-Quellcode:
function TMail.getidMessage: TidMessage;
var i : Integer;
begin
  if self.fidMessage = nil then
    self.fidMessage := Tidmessage.Create(nil);
  self.fidMessage.Priority := mpNormal;
  self.fidMessage.Date:= now;
// self.fidMessage.CharSet:= 'ISO-8859-15';

  self.fidMessage.From.Text:= Absendername;
  self.fidMessage.Sender.Text:=Absendername;
  for i:=0 to FFrom.Count-1 do
    self.fidMessage.ReplyTo.EMailAddresses := FFrom.Strings[i];
  //self.fidMessage.ReplyTo.Assign(FFrom);
  for i:=0 to FTo.Count-1 do
    self.fidMessage.Recipients.EMailAddresses := FTo.Strings[i];
  //self.fidMessage.Recipients.Assign(FTo);
  for i:=0 to FBcc.Count-1 do
    //self.fidMessage.BccList.EMailAddresses :=
    showmessage(FBcc.Strings[i]);
  //self.fidMessage.BccList.Assign(FBcc);
  for i:=0 to FCc.Count-1 do
    self.fidMessage.CcList.EMailAddresses := FCc.Strings[i];
  //self.fidMessage.CcList.Assign(FCc);

  self.fidMessage.Subject:= Betreff;
  self.fidMessage.Body.Clear;
  self.fidMessage.Body:= FBody;

  result:= self.fidMessage;
end;
Hier der Aufruf der Klasse in einem Form:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Mail:TMAIL;
begin
  Mail:=TMail.Create;
  Mail.An:='mich@zuhause.de';
  Mail.Von:='mama@papa.de';
  Mail.Absendername:='Max Mustermann';
  Mail.Betreff:= 'Hallöchen däs ist ein übeler Straßentest';
  Mail.Text:='Hallöchen däs ist ein übeler Straßentest';
  Mail.Text:='';
  Mail.Text:='Dies ist das Ende';
  Mail.Send;
  Mail.Free;
end;
Ralph
  Mit Zitat antworten Zitat