Send email: Difference between revisions

(→‎{{header|Perl 6}}: Add code to actually (theoretically) send the email)
Line 1,300:
}
)</lang>
 
=={{header|Phix}}==
{{trans|C}}
Obviously, USER/PWD/URL/etc. would all need altering for your details.
For gmail, make sure you enable https://myaccount.google.com/lesssecureapps
<lang Phix>include builtins\libcurl.e
 
constant USER = "you@gmail.com",
PWD = "secret",
URL = "smtps://smtp.gmail.com:465",
FROM = "sender@gmail.com",
TO = "addressee@email.com",
CC = "info@example.org",
FMT = "Date: Mon, 13 Jun 2018 11:30:00 +0100\r\n"&
"To: %s\r\n"&
"From: %s (Example User)\r\n"&
"Cc: %s (Another example User)\r\n"&
"Subject: Sanding mail via Phix\r\n"&
"\r\n"&
"This mail is being sent by a Phix program.\r\n"&
"\r\n"&
"It connects to the GMail SMTP server, by far the most popular mail program of all.\r\n"&
"Which is, however, probably not written in Phix.\r\n"
 
function read_callback(atom pbuffer, integer size, nmemb, atom pUserData)
-- copy a maximum of size*nmemb bytes into pbuffer
if size==0 or nmemb==0 or size*nmemb<1 then return 0 end if
{integer sent, integer len, atom pPayload} = peekns({pUserData,3})
integer bytes_written = min(size*nmemb,len-sent)
mem_copy(pbuffer,pPayload+sent,bytes_written)
sent += bytes_written
pokeN(pUserData,sent,machine_word())
-- printf(2, "*** We read %d bytes from file\n", bytes_written)
return bytes_written
end function
constant read_cb = call_back({'+',routine_id("read_callback")})
 
constant string payload_text = sprintf(FMT,{TO,FROM,CC})
 
curl_global_init()
CURLcode res = CURLE_OK
atom slist_recipients = NULL
atom curl = curl_easy_init()
curl_easy_setopt(curl, CURLOPT_USERNAME, USER)
curl_easy_setopt(curl, CURLOPT_PASSWORD, PWD)
curl_easy_setopt(curl, CURLOPT_URL, URL)
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL)
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0)
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0)
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM)
slist_recipients = curl_slist_append(slist_recipients, TO)
slist_recipients = curl_slist_append(slist_recipients, CC)
curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, slist_recipients)
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_cb);
atom pUserData = allocate(machine_word()*3),
pPayload = allocate_string(payload_text)
pokeN(pUserData,{0,length(payload_text),pPayload},machine_word())
curl_easy_setopt(curl, CURLOPT_READDATA, pUserData)
curl_easy_setopt(curl, CURLOPT_UPLOAD, true)
--curl_easy_setopt(curl, CURLOPT_VERBOSE, true)
res = curl_easy_perform(curl)
if res!=CURLE_OK then
printf(2, "curl_easy_perform() failed: %d (%s)\n",{res,curl_easy_strerror(res)})
end if
curl_slist_free_all(slist_recipients)
curl_easy_cleanup(curl)
curl_global_cleanup()</lang>
 
=={{header|PHP}}==
7,803

edits