sendmail
sendmail :: Mail :: defaultinit
sendmail :: Mail :: encrypt_with_base64
Should the content of this email be encrypted using base64?sendmail :: Mail :: encrypt_with_base64=
Should the content of this email be encrypted using base64?core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
core :: Object :: defaultinit
sendmail :: Mail :: defaultinit
sendmail :: Mail :: encrypt_with_base64
Should the content of this email be encrypted using base64?sendmail :: Mail :: encrypt_with_base64=
Should the content of this email be encrypted using base64?core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
core :: Object :: output_class_name
Display class name on stdout (debug only).
# An email to be sent using `sendmail`
class Mail
# Sender of this email
var from: String is writable
# Recipients of the message
var to = new Array[String]
# Recipients of a carbon copy of the message
var cc = new Array[String]
# Recipients of a blind carbon copy of the message
var bcc = new Array[String]
# Subject of this mail
var subject: String is writable
# Content of this mail
var content: String is writable
# Metadata in the header of this mail
var header = new HashMap[String, String]
# Should the content of this email be encrypted using base64?
#
# This will also set the header `Content-Transfer-Encoding` to base64.
# By default, the encoding is 8bit.
var encrypt_with_base64 = false
# Send this mail using the `sendmail` command
#
# require: `sendmail_is_available`
fun send: Bool
do
assert sendmail_is_available
# All recipients
var all = new Array[String]
all.add_all to
all.add_all cc
all.add_all bcc
var proc = new ProcessWriter("sendmail", all.join(","))
if proc.is_writable then proc.write to_s
proc.close
proc.wait
var status = proc.status
return status == 0
end
redef fun to_s
do
# Set encoding (and encode if needed)
var content = content
var encoding
if encrypt_with_base64 then
content = content.encode_base64
encoding = "base64"
else
encoding = "8bit"
end
header["Content-Transfer-Encoding"] = encoding
# Generate expected format
return """
From: {{{from}}}\r
To: {{{to.join(",")}}}\r
CC: {{{cc.join(",")}}}\r
BCC: {{{bcc.join(",")}}}\r
Subject: {{{subject}}}\r
{{{header.join("\r\n", ": ")}}}\r\n\r
{{{content}}}"""
end
end
lib/sendmail/sendmail.nit:34,1--108,3