richyt
asked on
Sending Email from Lotus Notes using ShellExecute
Hi,
Could you please tell me how to send a email with attachment through Lotus notes using the shel execute function. my sample code works but unfortunatley doesnot handle attchments.i.e on shell execute it open the lotus notes mail sending screen but the attchmnets are not to be found
thanks in advance
ps
below is my sample code in delphi which is suppouse to send the mail but some how the attchmnets donot come up
var
em_subject, em_body, em_mail,em_mailreceipient : string;
begin
em_subject := 'Hi there';
em_body := 'please help with this'
em_mailreceipient := 'richythomasv@hotmail.com'
em_mail := 'mailto:'+em_mailreceipien t+'?subjec t='+em_sub ject+'&bod y='+em_bod y
+'&attachment='+'C:\sample 1.txt';
ShellExecute(Handle,'open' ,PChar(em_ mail), nil, nil, SW_SHOWNORMAL) ;
Regards
richy
Could you please tell me how to send a email with attachment through Lotus notes using the shel execute function. my sample code works but unfortunatley doesnot handle attchments.i.e on shell execute it open the lotus notes mail sending screen but the attchmnets are not to be found
thanks in advance
ps
below is my sample code in delphi which is suppouse to send the mail but some how the attchmnets donot come up
var
em_subject, em_body, em_mail,em_mailreceipient : string;
begin
em_subject := 'Hi there';
em_body := 'please help with this'
em_mailreceipient := 'richythomasv@hotmail.com'
em_mail := 'mailto:'+em_mailreceipien
+'&attachment='+'C:\sample
ShellExecute(Handle,'open'
Regards
richy
Or maybe the following link (code is VB) is a good start too :
http://www.fabalou.com/VBandVBA/lotusnotesmail.asp
You should have ComObj in your uses clause.
Also you should create an OLE-Object at runtime : CreateOleObject('Notes.Not esSession' );
And then it is all in converting the methods and setting properties from VB -> Delphi.
Maybe woth a try.
Now I'm leaving home, but maybe I will try to convert the vb-code to delphi-code.
Best Regards,
Wim.
http://www.fabalou.com/VBandVBA/lotusnotesmail.asp
You should have ComObj in your uses clause.
Also you should create an OLE-Object at runtime : CreateOleObject('Notes.Not
And then it is all in converting the methods and setting properties from VB -> Delphi.
Maybe woth a try.
Now I'm leaving home, but maybe I will try to convert the vb-code to delphi-code.
Best Regards,
Wim.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Hm, looks like it is working except that when the body contains more than 1 line of text, the mail is not sent.
I found a little workaround for that, assuming that the Body is not in a string, but in a TStrings :
procedure SendNotesMail( ServerName, MailDbName: String ; Subject, Attachment, Recipient: String ; BodyText: TStrings ; SaveIt: Boolean );
var
NotesSession: Variant;
Database: Variant;
Mail: Variant;
AttachME: Variant; { The attachment richtextfile object }
EmbedObj: Variant; { The embedded object (Attachment) }
MailBody: Variant;
intX: Integer;
begin
NotesSession := CreateOleObject( 'Notes.NotesSession' );
Database := NotesSession.GetDatabase( ServerName, MailDbName );
If Not DataBase.IsOpen Then
Database.Openmail;
Mail := Database.CreateDocument;
Mail.AppendItemValue( 'Subject', Subject );
{ Instead of use AppenItemValue, use the CreateRichtTextItem-Method }
MailBody := Mail.CREATERICHTEXTITEM( 'Body' );
{ Loop all lines of the TStrings-Parameter and add it to body, including CRLF }
for intX:=0 to BodyText.Count-1 do
begin
MailBody.AppendText( BodyText[intX] );
MailBody.AddNewLine(1); { CR/LF }
end;
AttachME := Mail.CREATERICHTEXTITEM( 'Attachment' );
EmbedObj := AttachME.EMBEDOBJECT( 1454, '', Attachment, 'Attachment' );
Mail.Send( 0, Recipient );
end;
I tested this out and it is a fully working solution.
I even included an URL in my body and I was able to click on it from my webmail !
So I guess we have found a solution to your problem.
Best regards,
Wim.
I found a little workaround for that, assuming that the Body is not in a string, but in a TStrings :
procedure SendNotesMail( ServerName, MailDbName: String ; Subject, Attachment, Recipient: String ; BodyText: TStrings ; SaveIt: Boolean );
var
NotesSession: Variant;
Database: Variant;
Mail: Variant;
AttachME: Variant; { The attachment richtextfile object }
EmbedObj: Variant; { The embedded object (Attachment) }
MailBody: Variant;
intX: Integer;
begin
NotesSession := CreateOleObject( 'Notes.NotesSession' );
Database := NotesSession.GetDatabase( ServerName, MailDbName );
If Not DataBase.IsOpen Then
Database.Openmail;
Mail := Database.CreateDocument;
Mail.AppendItemValue( 'Subject', Subject );
{ Instead of use AppenItemValue, use the CreateRichtTextItem-Method
MailBody := Mail.CREATERICHTEXTITEM( 'Body' );
{ Loop all lines of the TStrings-Parameter and add it to body, including CRLF }
for intX:=0 to BodyText.Count-1 do
begin
MailBody.AppendText( BodyText[intX] );
MailBody.AddNewLine(1); { CR/LF }
end;
AttachME := Mail.CREATERICHTEXTITEM( 'Attachment' );
EmbedObj := AttachME.EMBEDOBJECT( 1454, '', Attachment, 'Attachment' );
Mail.Send( 0, Recipient );
end;
I tested this out and it is a fully working solution.
I even included an URL in my body and I was able to click on it from my webmail !
So I guess we have found a solution to your problem.
Best regards,
Wim.
Oh yeah, and call it like (assuming that the body of the mail is in a TMemo on the Form (Memo1) :
SendNotesMail3( Server, MailDb, em_subject, 'C:\Sample1.txt', em_mailreceipient, Memo1.Lines, True );
Best regards,
Wim.
SendNotesMail3( Server, MailDb, em_subject, 'C:\Sample1.txt', em_mailreceipient, Memo1.Lines, True );
Best regards,
Wim.
ASKER
Hi ,
thanks for the info but what i was trying to do was not to use the Domino COM Obj. I think the mailto syntax has a problem with inline attachments.
but i found another delphi component on the net called AFQuickMail which works well and has no problems sending the mail through any mail program be it lotus notes ,MS outlook or even out look express. this uses the MAPI Model to send the mail which i think most mail programs support
any how thanks for the COM solution i will just try it out
regards
richy
Thanks
thanks for the info but what i was trying to do was not to use the Domino COM Obj. I think the mailto syntax has a problem with inline attachments.
but i found another delphi component on the net called AFQuickMail which works well and has no problems sending the mail through any mail program be it lotus notes ,MS outlook or even out look express. this uses the MAPI Model to send the mail which i think most mail programs support
any how thanks for the COM solution i will just try it out
regards
richy
Thanks
So, instead of :
em_mail := 'mailto:'+em_mailreceipien
+'&attachment='+'C:\sample
use :
em_mail := 'mailto:'+em_mailreceipien
+'&attachment='+'"C:\sampl
I have not tested this out, but found something similar on the net.
Hope it helps.
Best regards,
Wim.