From: Frank Li Date: Fri, 17 Apr 2009 15:53:21 +0000 (+0800) Subject: Send mail: Combine to one email work. X-Git-Url: http://git.sourceforge.jp/view?p=tortoisegit%2FTortoiseGitJp.git;a=commitdiff_plain;h=3dbeda807bd0fbee33b77bd778251bb06876c8f1 Send mail: Combine to one email work. best regards Frank Li --- diff --git a/src/TortoiseProc/Commands/SendMailCommand.cpp b/src/TortoiseProc/Commands/SendMailCommand.cpp index baeb3f4..e7d7300 100644 --- a/src/TortoiseProc/Commands/SendMailCommand.cpp +++ b/src/TortoiseProc/Commands/SendMailCommand.cpp @@ -34,7 +34,7 @@ bool SendMailCommand::Execute() if(dlg.m_bCombine) flags |= SENDMAIL_COMBINED; - progDlg.SetSendMailOption(dlg.m_To,dlg.m_CC,flags); + progDlg.SetSendMailOption(dlg.m_To,dlg.m_CC,dlg.m_Subject,flags); progDlg.DoModal(); diff --git a/src/TortoiseProc/Patch.cpp b/src/TortoiseProc/Patch.cpp index 70d6ae5..d479e41 100644 --- a/src/TortoiseProc/Patch.cpp +++ b/src/TortoiseProc/Patch.cpp @@ -91,6 +91,42 @@ int CPatch::Send(CString &pathfile,CString &TO,CString &CC,bool bAttachment) } +int CPatch::Send(CTGitPathList &list,CString &To,CString &CC, CString &subject,bool bAttachment,CString *errortext) +{ + CStringArray attachments; + CString body; + for(int i=0;i "),g_Git.GetUserName(),g_Git.GetUserEmail()); + + if(mail.SendSpeedEmail(sender,To,subject,body,NULL,&attachments,CC,25,sender)) + return 0; + else + { + if(errortext) + *errortext=mail.GetLastErrorText(); + return -1; + } + +} int CPatch::Parser(CString &pathfile) { diff --git a/src/TortoiseProc/Patch.h b/src/TortoiseProc/Patch.h index b2571e5..5b7e2a1 100644 --- a/src/TortoiseProc/Patch.h +++ b/src/TortoiseProc/Patch.h @@ -1,6 +1,7 @@ #pragma once #include "hwsmtp.h" +#include "TGitPath.h" #define REG_SMTP_SERVER _T("Software\\TortoiseGit\\EMAIL\\SMTPSERVER") #define REG_SMTP_PORT _T("Software\\TortoiseGit\\EMAIL\\PORT") @@ -18,6 +19,8 @@ public: ~CPatch(void); int Parser(CString &pathfile); int Send(CString &pathfile,CString &To, CString &CC,bool bAttachment); + + static int Send(CTGitPathList &list,CString &To,CString &CC, CString &subject,bool bAttachment,CString *errortext); CString m_LastError; CString m_Author; diff --git a/src/TortoiseProc/SVNProgressDlg.cpp b/src/TortoiseProc/SVNProgressDlg.cpp index e891669..9e5948e 100644 --- a/src/TortoiseProc/SVNProgressDlg.cpp +++ b/src/TortoiseProc/SVNProgressDlg.cpp @@ -2709,21 +2709,38 @@ bool CGitProgressDlg::CmdSendMail(CString& sWindowTitle, bool& /*localoperation* //SetBackgroundImage(IDI_ADD_BKG); ReportCmd(CString(MAKEINTRESOURCE(IDS_PROGRS_CMD_SENDMAIL))); bool ret=true; - - for(int i=0;im_SendMailFlags&SENDMAIL_COMBINED) { - CPatch patch; - Notify(m_targetPathList[i],git_wc_notify_sendmail_start); - int ret=patch.Send((CString&)m_targetPathList[i].GetWinPathString(),this->m_SendMailTO, - this->m_SendMailCC,this->m_SendMailFlags&SENDMAIL_ATTACHMENT); - if(ret) + CString error; + CTGitPath path; + Notify(path,git_wc_notify_sendmail_start); + CString err; + if(CPatch::Send(m_targetPathList,m_SendMailTO,m_SendMailCC,m_SendMailSubject,this->m_SendMailFlags&SENDMAIL_COMBINED,&err)) { - Notify(m_targetPathList[i],git_wc_notify_sendmail_error,ret,&patch.m_LastError); + Notify(path,git_wc_notify_sendmail_error,ret,&err); ret = false; + }else + { + Notify(path,git_wc_notify_sendmail_done,ret); + } + + }else + { + for(int i=0;im_SendMailTO, + this->m_SendMailCC,this->m_SendMailFlags&SENDMAIL_ATTACHMENT); + if(ret) + { + Notify(m_targetPathList[i],git_wc_notify_sendmail_error,ret,&patch.m_LastError); + ret = false; + } + Notify(m_targetPathList[i],git_wc_notify_sendmail_done,ret); + if(m_bCancelled) + return false; } - Notify(m_targetPathList[i],git_wc_notify_sendmail_done,ret); - if(m_bCancelled) - return false; } return ret; } \ No newline at end of file diff --git a/src/TortoiseProc/SVNProgressDlg.h b/src/TortoiseProc/SVNProgressDlg.h index 898e588..645e558 100644 --- a/src/TortoiseProc/SVNProgressDlg.h +++ b/src/TortoiseProc/SVNProgressDlg.h @@ -131,7 +131,7 @@ public: // void SetRevisionEnd(const GitRev& rev) {m_RevisionEnd = rev;} void SetDiffOptions(const CString& opts) {m_diffoptions = opts;} - void SetSendMailOption(CString &TO, CString &CC,DWORD flags){m_SendMailTO=TO; m_SendMailCC=CC;this->m_SendMailFlags = flags;} + void SetSendMailOption(CString &TO, CString &CC,CString &Subject,DWORD flags){m_SendMailTO=TO;m_SendMailSubject=Subject; m_SendMailCC=CC;this->m_SendMailFlags = flags;} void SetDepth(git_depth_t depth = git_depth_unknown) {m_depth = depth;} void SetPegRevision(GitRev pegrev = GitRev()) {m_pegRev = pegrev;} void SetProjectProperties(ProjectProperties props) {m_ProjectProperties = props;} @@ -351,7 +351,8 @@ private: DWORD m_SendMailFlags; CString m_SendMailTO; CString m_SendMailCC; - + CString m_SendMailSubject; + /// CComPtr m_BugTraqProvider; // some strings different methods can use