我已经在 Ubuntu 11.04 32 位上运行了 SVN,现在希望使用我的 GMAIL 帐户为每次提交发送通知。
我已经提交了一些东西,但实际上并没有收到他们的提交电子邮件。没有显示任何错误,我查看了日志,但到目前为止还没有找到太多有用的信息。
我已经阅读了很多关于此的帖子并编辑了以下文件,包括它们现在包含的内容。我试过使用 sendmail 和 postfix,但没有成功,这就是我使用谷歌邮件服务器的原因。如果有人能指出正确的方向或替代方法,我将不胜感激。
我找到并使用过的链接。
http://sadomovalex.blogspot.com/2009/12/use-gmail-smtp-server-for-post-commit.html
http://iffee.wordpress.com/2009/04/08/svn-commit-to-google-apps-email-notification/
post-commit.tmpl
REPOS="$1"
REV="$2"
/home/megaz/svn/repos/ya/hooks/mailer.py commit "$REPOS" \
"$REV" /home/megaz/svn/repos/ya/hooks/mailer.conf
mailer.conf
[general]
smtp_hostname = smtp.gmail.com:587
smtp_username = #mygmailaddress
smtp_password = #mygmailpassword
smtp_use_ssl = true
smtp_use_tls = 1
[defaults]
diff = /usr/bin/diff -u -L %(label_from)s -L %(label_to)s %(from)s %(to)s
commit_subject_prefix = [SVN-Commit]
propchange_subject_prefix =
lock_subject_prefix =
unlock_subject_prefix =
from_addr = #my from address
to_addr = #my to address
reply_to = #my replyto address
generate_diffs = none
show_nonmatching_paths = yes
[maps]
mailer.py
class SMTPOutput(MailedOutput):
def start(self, group, params):
MailedOutput.start(self, group, params)
self.buffer = StringIO()
self.write = self.buffer.write
self.write(self.mail_headers(group, params))
def finish(self):
server = smtplib.SMTP(self.cfg.general.smtp_hostname)
# 2009-12-13 asadomov: add ssl configuration (e.g. for gmail smtp server)
if self.cfg.is_set('general.smtp_use_ssl') and self.cfg.general.smtp_use_ssl.lower() == "true":
server.ehlo()
server.starttls()
server.ehlo()
if self.cfg.is_set('general.smtp_username'):
server.login(self.cfg.general.smtp_username,
self.cfg.general.smtp_password)
server.sendmail(self.from_addr, self.to_addrs, self.buffer.getvalue())
server.quit()
最佳答案
我明白了,你还没有真正阅读说明。您复制/粘贴的代码需要替换您尚未下载的较大文件中的片段。此外,提交后脚本的文件名不应有 .templ
后缀;这就是他们在发行版中用于非事件示例/模板文件的内容。
也许这也解释了为什么您无法让 Sendmail 工作。在这一点上,我建议回到那个,因为它更简单。
关于python - 通过 GMAIL SMTP 的 SVN 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6980631/