13
13
from email.MIMEText import MIMEText
16
def send_changeset(to_address, from_address, subject,
17
changeset_fp, message):
18
# Create the enclosing (outer) message
16
def send_changeset(b, revno, to_address, message, file, diff_options):
17
from bzrlib import find_branch
18
from bzrlib.commands import BzrCommandError
23
revision = b.get_revision(b.lookup_revision(revno))
25
message = revision.message.split('\n')[0]
27
from_address = bzrlib.osutils._get_user_id()
19
29
outer = MIMEMultipart()
20
outer['Subject'] = '[PATCH] ' + subject
30
outer['Subject'] = '[PATCH] ' + message
21
31
outer['To'] = to_address
22
32
outer['From'] = from_address
25
msg = MIMEText(message)
28
msg = MIMEText(changeset_fp.read())
29
#msg.add_header('Content-Disposition', 'attachment', filename=')
35
s.sendmail(from_address, to_address, outer.as_string())
34
# Either read the mail body from the specified file, or spawn
35
# an editor and let the user type a description.
37
mail_body = open(file, "rt").read()
39
info = "Changset for revision %d by %s\n" % (revno,
41
info += "with the following message:\n"
42
for line in revision.message.split('\n'):
43
info += " " + line + "\n"
45
mail_body = bzrlib.osutils.get_text_message(info)
47
raise BzrCommandError("aborted")
48
outer.attach(MIMEText(mail_body))
50
changeset_fp = StringIO.StringIO()
51
gen_changeset.show_changeset(b, revno,
52
external_diff_options=diff_options,
54
outer.attach(MIMEText(changeset_fp.getvalue()))
57
fp = open(os.path.join(bzrlib.osutils.config_dir(), 'smtp-host'), 'rt')
58
smtpconn = smtplib.SMTP(fp.readline().strip('\n'))
60
smtpconn = smtplib.SMTP()
63
smtpconn.sendmail(from_address, to_address, outer.as_string())