Page 6 of 25

Posted: Fri Dec 01, 2006 11:04 am
by GeoTrail
gnozal wrote:Did you check PureSMTP_SetXMailer() ?
Yes I know about that, but that sets the xmailer setting. But when you send a mail and check the mail source you will still see Received: from PureSMPT.
gnozal wrote:I don't know php. Why do you need this ?
I send "Content-Transfer-Encoding: 7bit" for text and "Content-Transfer-Encoding: base64" for binary attachments.
Note that you can set the content type with PureSMTP_SetContentType().
Yeah I know that, but there are lots more settings that can be added with PHP. One example is sending the hostname, like geotrail.no that would help avoiding spam filter. Btw, PHP sendmail uses 8 bit for both plain text and html.

Am I asking too much now? :shock:
Thanks alot for your reply and great work gnozal. Don't mean to drown you in requests here ;)

Posted: Fri Dec 01, 2006 11:15 am
by gnozal
GeoTrail wrote:Yeah I know that, but there are lots more settings that can be added with PHP. One example is sending the hostname, like geotrail.no that would help avoiding spam filter. Btw, PHP sendmail uses 8 bit for both plain text and html.
I have only implemented 'basic' SMTP.
To add some extra stuff I would need some examples.
GeoTrail wrote:Am I asking too much now? :shock:
Thanks alot for your reply and great work gnozal. Don't mean to drown you in requests here ;)
No problem.

Posted: Fri Dec 01, 2006 11:48 am
by GeoTrail
Thanks again for your reply gnozal.

All I would really need is a function like this:

Code: Select all

; Add "MIME-Version: 1.0" to the header
Header.s = "MIME-Version"
String.s = "1.0"
Result = PureSMTP_SetHeader(Header.s, String.s)

; Add "X-Priority: 3" to the header
Header.s = "X-Priority"
String.s = "3"
Result = PureSMTP_SetHeader(Header.s, String.s)

; Add "X-MSMail-Priority: Normal" to the header
Header.s = "X-MSMail-Priority"
String.s = "Normal"
Result = PureSMTP_SetHeader(Header.s, String.s)

; Add "Reply-To: sender@name.com" to the header
Header.s = "Reply-To"
String.s = "sender@name.com"
Result = PureSMTP_SetHeader(Header.s, String.s)
Hopefully that will give you an idea of what I'd love to get in PureSMTP ;)

That way I could use the PureSMTP_SetHeader function to add anything I'd need :)

Posted: Fri Dec 01, 2006 11:54 am
by gnozal
Are all these strings sent in the header like "Subject: " or "X-Mailer: " ?
Do they need a ": " after the string or not ?


On the todo list, something like :
- PureSMTP_AddHeader()
- PureSMTP_ClearHeader()

Posted: Fri Dec 01, 2006 11:56 am
by GeoTrail
Yes anything I would add to Header.s and String.s would be added to the header just like Subject etc.

Sweet, can I hold my breath while I wait? ;) hehehehe
Sorry, no need to rush, I can hold my breath for a long time hehehe :lol: :D

Posted: Fri Dec 01, 2006 12:35 pm
by gnozal
GeoTrail wrote:Yes anything I would add to Header.s and String.s would be added to the header just like Subject etc.

Sweet, can I hold my breath while I wait? ;) hehehehe
Sorry, no need to rush, I can hold my breath for a long time hehehe :lol: :D
Ok, new beta.
- the X-Mailer should appear in 'from ..."
- new function PureSMTP_AddHeader(Header.s, String.s) ; Set additional header strings [like "X-MSMail-Priority", "Normal"]
- new function PureSMTP_ClearHeader() ; Clear additional header strings

Code: Select all

PureSMTP_SetXMailer("ZORGONFleet")
PureSMTP_AddHeader("X-MSMail-Priority", "High")
PureSMTP_AddHeader("Reply-To", "bill@microsoft.com")
Could you test this beta lib (ANSI / PB4) : http://people.freenet.de/gnozal/PureSMTP_BETA.zip ?

Posted: Fri Dec 01, 2006 1:46 pm
by GeoTrail
Wow, that was quick.

I'm getting this error
501 5.0.0 Invalid domain name
I've searched online for the error code and it might be an error with my ISP's smtp server. I'm gonna try to find another smtp server to try it on. Be back shortly ;)

Posted: Fri Dec 01, 2006 2:41 pm
by GeoTrail
Just tried with another smtp server. Still getting error but two different errors this time.

One error:

Code: Select all

554 <geotrail@gmail.com>: Recipient address rejected: Relay access denied
Another error I get:

Code: Select all

250 Ok
Here's the code that checks for any error:

Code: Select all

				Status = PureSMTP_SendMail(Ricipient$, "Robert Olsen <geotrail@start.no>", Subject$, Message$, "")
				If Status = #PureSMTP_Ok
				
					Title$	= "Success"
					Msg$	= PureSMTP_GetLastServerMessage()
					MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
				
				Else
				
					Title$	= "Error"
					Msg$	= "Sendmail error code: " +Str(Status) + Chr(10) + PureSMTP_GetLastServerMessage()
					MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
				
				EndIf
Status gives me the error code -3

Does that mean anything to you?

Posted: Fri Dec 01, 2006 3:22 pm
by gnozal
Strange ... No problems here !

Error -3 means an unexpected server response, like 554 for example (transaction failed).
The code you have posted seems incomplete, because there is an error "554 <geotrail@gmail.com>: Recipient address rejected: Relay access denied" and I don't see this address in the code. Is it Recipient$ ? If so what is exactly in Recipient$ ?

Oh, and does your code work with the non beta PureSMTP ?

I have uploaded a new version of the beta lib. It will create a 'PureSMTP.log" file to help debugging.

Posted: Fri Dec 01, 2006 3:31 pm
by GeoTrail
I've tried with several recipients, geotrail [@] gmail.com geotrail [@] start.no etc.

Yes, my code worked perfectly before the beta with user defined header function.

I'm just gonna restart my PC and then I'll try the log version.

Posted: Fri Dec 01, 2006 3:46 pm
by GeoTrail
Ok, here are the results from the two servers I've been trying it with:
--------------
RECEIVE: 220 mail49.nsc.no ESMTP Sendmail 8.13.8/8.13.5; Fri, 1 Dec 2006 15:41:46 +0100 (CET)
SEND: HELO Test email program

RECEIVE: 501 5.0.0 Invalid domain name
SEND: QUIT

RECEIVE: 221 2.0.0 mail49.nsc.no closing connection
ine.no>: Recipient address rejected: Relay access denied
SEND: QUIT

RECEIVE: 221 Bye
1 Bye
--------------
RECEIVE: 220 smtp1.powertech.no ESMTP Postfix
SEND: HELO Test email

RECEIVE: 250 smtp1.powertech.no
SEND: MAIL FROM: <geotrail@start.no>

RECEIVE: 250 Ok
SEND: RCPT TO: <geotrail@gmail.com>

RECEIVE: 554 <geotrail@gmail.com>: Recipient address rejected: Relay access denied
denied
SEND: QUIT

RECEIVE: 221 Bye
1 Bye
Here's the code I used

Code: Select all

    	If PureSMTP_OpenSMTPConnection("smtp.online.no", 25) = #PureSMTP_Ok
    		
    		MailTo.s = "Robert Olsen <geotrail@gmail.com>"
			MailFrom.s = "GeoTrail Corporation <jaroolse@online.no>"
			Subject.s = "Test beta lib"
			MsgBody.s = "Testing a new SMTP Beta lib"
			
			PureSMTP_SetXMailer("Test email program")
			PureSMTP_SetContentType("text/plain; charset=iso-8859-1")
    		
    		Status.l = PureSMTP_SendMail(MailTo, MailFrom, Subject, MsgBody, "")
    		
			If Status = #PureSMTP_Ok
				Title$	= "Success"
				Msg$	= PureSMTP_GetLastServerMessage()
				MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
			Else
				Title$	= "Error"
				Msg$	= "Could not send message." + Chr(10) + PureSMTP_GetLastServerMessage()
				MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
			EndIf
    		
    		
    		; Close connection to SMTP server.
    		PureSMTP_CloseSMTPConnection()
    		
    	Else
    		; If there was an error connecting to the SMTP server.
      		Title$ = "OpenSMTPConnection failed"
    		Msg$   = "Couldn't connect to the SMTP email server." + Chr(13)+Chr(10) + Chr(13)+Chr(10) + PureSMTP_GetLastServerMessage()
    		MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
    	EndIf

Posted: Fri Dec 01, 2006 3:57 pm
by gnozal
GeoTrail wrote:--------------
RECEIVE: 220 mail49.nsc.no ESMTP Sendmail 8.13.8/8.13.5; Fri, 1 Dec 2006 15:41:46 +0100 (CET)
SEND: HELO Test email program

RECEIVE: 501 5.0.0 Invalid domain name
SEND: QUIT
Do not use an X-Mailer with spaces ...
Try "TestEmail" instead of "Test EMail"
GeoTrail wrote:--------------
RECEIVE: 220 smtp1.powertech.no ESMTP Postfix
SEND: HELO Test email

RECEIVE: 250 smtp1.powertech.no
SEND: MAIL FROM: <geotrail@start.no>

RECEIVE: 250 Ok
SEND: RCPT TO: <geotrail@gmail.com>

RECEIVE: 554 <geotrail@gmail.com>: Recipient address rejected: Relay access denied
denied
SEND: QUIT
I don't see anything wrong here !
"RCPT TO: <geotrail@gmail.com>" is correct, I don't understand why the server answers with 554 ?!
Maybe the problem is that our server requires authentication and it isn't enabled.

Posted: Fri Dec 01, 2006 4:03 pm
by GeoTrail
Oh man.

Code: Select all

PureSMTP_SetXMailer("Testemailprogram")
Seemed to do the trick :oops:

It's working peeeerfectly now :D
Thank yous ooo much gnozal. Perfect. Just what I wanted for Xmas ;)

Posted: Fri Dec 01, 2006 4:05 pm
by gnozal
GeoTrail wrote:Oh man.

Code: Select all

PureSMTP_SetXMailer("Testemailprogram")
Seemed to do the trick :oops:

It's working peeeerfectly now :D
Thank yous ooo much gnozal. Perfect. Just what I wanted for Xmas ;)
I will add a check in PureSMTP for this to ensure it has no spaces.

Posted: Fri Dec 01, 2006 4:28 pm
by GeoTrail
Yeah that's a good idea :)

Just one thing, maybe you can spot something wrong here.

The first code is fine, sends html, the second sends plain text:

Code: Select all

    	Msg$ = "<p><b>This is the email message.</b><br />Line two?</p>"
    
    	Ricipient$ = InputRequester("Enter ricipient", "Send email to:", "Robert Olsen <geotrail@gmail.com>")
    	Subject$ = InputRequester("Enter subject", "Enter message subject:", "Email subject")
    	Msg$ = InputRequester("Enter message", "Enter email message:", Msg$)
    	
    	If Subject$ <> "" And Msg$ <> "" And Ricipient$ <> ""
    	
    		If PureSMTP_OpenSMTPConnection(MySMTPServer, MySMTPPort) = #PureSMTP_Ok
    	
				PureSMTP_SetXMailer("Testemail")
				PureSMTP_SetContentType("text/html; charset=iso-8859-1")
				PureSMTP_AddHeader("X-MSMail-Priority", "Normal")
				PureSMTP_AddHeader("Reply-To", "geotrail@gmail.com")
				
				Head$ = "<html><head><meta http-equiv="+Chr(34)+"Content-Type"+Chr(34)+" content="+Chr(34)+"text/html; charset=UTF-8"+Chr(34)+"><title>Gmail</title></head><body>"
				Footer$ = "</body></html>"
				Message$ + Head$ + Msg$ + Footer$
				
				Status = PureSMTP_SendMail(Ricipient$, "Robert Olsen <geotrail@start.no>", Subject$, Message$, "")
				If Status = #PureSMTP_Ok
				
					Title$	= "Success"
					Msg$	= PureSMTP_GetLastServerMessage()
					MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
				
				Else
				
					Title$	= "Error"
					Msg$	= "Sendmail error code: " +Str(Status) + Chr(10) + PureSMTP_GetLastServerMessage()
					MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
				
				EndIf
			
			Else
			
				Title$	= "Error"
				Msg$	= "OpenSMTP error: " + Chr(10) + PureSMTP_GetLastServerMessage()
				MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
			
			EndIf
    	
    	EndIf
This second code works too, but only the first time. I have to quit the program/launch it again to be able to send it twice

Code: Select all

    	If PureSMTP_OpenSMTPConnection(MySMTPServer, MySMTPPort) = #PureSMTP_Ok
    		
    		MailTo.s = "Robert Olsen <geotrail@gmail.com>"
			MailFrom.s = "GeoTrail Corporation <jaroolse@online.no>"
			Subject.s = "Test beta lib"
			MsgBody.s = "Testing a new SMTP Beta lib"
			
			PureSMTP_SetXMailer("Testemailprogram")
			PureSMTP_SetContentType("text/plain; charset=iso-8859-1")
			PureSMTP_AddHeader("X-MSMail-Priority", "High")
			PureSMTP_AddHeader("Reply-To", "bill@microsoft.com")
    		
    		Status.l = PureSMTP_SendMail(MailTo, MailFrom, Subject, MsgBody, "")
    		
			If Status = #PureSMTP_Ok
				Title$	= "Success"
				Msg$	= PureSMTP_GetLastServerMessage()
				MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
			Else
				Title$	= "Error"
				Msg$	= "Could not send message." + Chr(10) + PureSMTP_GetLastServerMessage()
				MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
			EndIf
    		
    		
    		; Close connection to SMTP server.
    		PureSMTP_CloseSMTPConnection()
    		
    	Else
    		; If there was an error connecting to the SMTP server.
      		Title$ = "OpenSMTPConnection failed"
    		Msg$   = "Couldn't connect to the SMTP email server." + Chr(13)+Chr(10) + Chr(13)+Chr(10) + PureSMTP_GetLastServerMessage()
    		MessageRequester(Title$, Msg$, #PB_MessageRequester_Ok | #MB_ICONERROR)
    	EndIf
I can't find the error there if there are any. Both codes work fine the first time. I have created a button for each code part. When I click the button for the first code several times after each other it works fine.

But when I do the same for the second code, it sends the message the first time I click, but the second time I click I get the error message that it cannot connect to the SMTP server. I might have missed something, that my poor old eyes can't spot :shock:

Both codes use the same smtp server and port.