Skip to content

Instantly share code, notes, and snippets.

@timburks
Created February 2, 2011 05:41
Show Gist options
  • Save timburks/807297 to your computer and use it in GitHub Desktop.
Save timburks/807297 to your computer and use it in GitHub Desktop.
Sending mail with SKPSMTPClient
(load "SKPSMTP")
(class SKPSMTPClient is NSObject
(ivar (id) smtp (id) user (BOOL) running)
(ivar-accessors)
(- (void) sendMessage:(id) message is
(set @smtp (SKPSMTPMessage new))
(@smtp setFromEmail:(@user username:))
(@smtp setToEmail:(@user username:))
(@smtp setRelayHost:(@user server:))
(@smtp setRelayPorts:(array (@user port:)))
(@smtp setRequiresAuth:YES)
(@smtp setLogin:(@user username:))
(@smtp setPass:(@user password:))
(@smtp setSubject:(message subject:))
(@smtp setWantsSecure:YES)
(@smtp setDelegate:self)
(@smtp setParts:(array (dict kSKPSMTPPartContentTypeKey:"text/plain"
kSKPSMTPPartMessageKey:(message text:)
kSKPSMTPPartContentTransferEncodingKey:"8bit")))
(@smtp send)
(set @running YES)
(while @running
((NSRunLoop currentRunLoop) runUntilDate:(NSDate dateWithTimeIntervalSinceNow:0.01))))
(- (void)messageSent:(id)message is
(set @running NO)
(puts "sent"))
(- (void) messageFailed:(id)message error:(id)error is
(set @running NO)
(puts "failed with error #{(error description)}")))
(set user (dict username:(((NSProcessInfo processInfo) environment) objectForKey:"BOT_MAIL_USERNAME")
password:(((NSProcessInfo processInfo) environment) objectForKey:"BOT_MAIL_PASSWORD")
server:"smtp.gmail.com"
port:587))
(set client (SKPSMTPClient new))
(client setUser:user)
(10 times:
(do (i)
(client sendMessage:(dict recipient:(user username:)
subject:"Test Message #{i}"
text:"Hello, this is a tést messåge. #{i}"))))
(puts "done")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment