if(dlg.m_bCombine)\r
flags |= SENDMAIL_COMBINED;\r
\r
- progDlg.SetSendMailOption(dlg.m_To,dlg.m_CC,flags);\r
+ progDlg.SetSendMailOption(dlg.m_To,dlg.m_CC,dlg.m_Subject,flags);\r
\r
progDlg.DoModal(); \r
\r
\r
\r
}\r
+int CPatch::Send(CTGitPathList &list,CString &To,CString &CC, CString &subject,bool bAttachment,CString *errortext)\r
+{\r
+ CStringArray attachments;\r
+ CString body;\r
+ for(int i=0;i<list.GetCount();i++)\r
+ {\r
+ CPatch patch;\r
+ patch.Parser((CString&)list[i].GetWinPathString());\r
+ if(bAttachment)\r
+ {\r
+ attachments.Add(list[i].GetWinPathString());\r
+ body+=patch.m_Subject;\r
+ body+=_T("\r\n");\r
+\r
+ }else\r
+ {\r
+ g_Git.StringAppend(&body,(BYTE*)patch.m_Body.GetBuffer(),CP_ACP,patch.m_Body.GetLength());\r
+ }\r
+\r
+ }\r
+\r
+ CHwSMTP mail;\r
+ \r
+ CString sender;\r
+ sender.Format(_T("%s <%s> "),g_Git.GetUserName(),g_Git.GetUserEmail());\r
+\r
+ if(mail.SendSpeedEmail(sender,To,subject,body,NULL,&attachments,CC,25,sender))\r
+ return 0;\r
+ else\r
+ {\r
+ if(errortext)\r
+ *errortext=mail.GetLastErrorText();\r
+ return -1;\r
+ }\r
+\r
+}\r
\r
int CPatch::Parser(CString &pathfile)\r
{\r
#pragma once\r
\r
#include "hwsmtp.h"\r
+#include "TGitPath.h"\r
\r
#define REG_SMTP_SERVER _T("Software\\TortoiseGit\\EMAIL\\SMTPSERVER")\r
#define REG_SMTP_PORT _T("Software\\TortoiseGit\\EMAIL\\PORT")\r
~CPatch(void);\r
int Parser(CString &pathfile);\r
int Send(CString &pathfile,CString &To, CString &CC,bool bAttachment);\r
+ \r
+ static int Send(CTGitPathList &list,CString &To,CString &CC, CString &subject,bool bAttachment,CString *errortext);\r
\r
CString m_LastError;\r
CString m_Author;\r
//SetBackgroundImage(IDI_ADD_BKG);\r
ReportCmd(CString(MAKEINTRESOURCE(IDS_PROGRS_CMD_SENDMAIL)));\r
bool ret=true;\r
-\r
- for(int i=0;i<m_targetPathList.GetCount();i++)\r
+ if(this->m_SendMailFlags&SENDMAIL_COMBINED)\r
{\r
- CPatch patch;\r
- Notify(m_targetPathList[i],git_wc_notify_sendmail_start);\r
- int ret=patch.Send((CString&)m_targetPathList[i].GetWinPathString(),this->m_SendMailTO,\r
- this->m_SendMailCC,this->m_SendMailFlags&SENDMAIL_ATTACHMENT);\r
- if(ret)\r
+ CString error;\r
+ CTGitPath path;\r
+ Notify(path,git_wc_notify_sendmail_start);\r
+ CString err;\r
+ if(CPatch::Send(m_targetPathList,m_SendMailTO,m_SendMailCC,m_SendMailSubject,this->m_SendMailFlags&SENDMAIL_COMBINED,&err))\r
{\r
- Notify(m_targetPathList[i],git_wc_notify_sendmail_error,ret,&patch.m_LastError);\r
+ Notify(path,git_wc_notify_sendmail_error,ret,&err);\r
ret = false;\r
+ }else\r
+ {\r
+ Notify(path,git_wc_notify_sendmail_done,ret);\r
+ }\r
+\r
+ }else\r
+ {\r
+ for(int i=0;i<m_targetPathList.GetCount();i++)\r
+ {\r
+ CPatch patch;\r
+ Notify(m_targetPathList[i],git_wc_notify_sendmail_start);\r
+ int ret=patch.Send((CString&)m_targetPathList[i].GetWinPathString(),this->m_SendMailTO,\r
+ this->m_SendMailCC,this->m_SendMailFlags&SENDMAIL_ATTACHMENT);\r
+ if(ret)\r
+ {\r
+ Notify(m_targetPathList[i],git_wc_notify_sendmail_error,ret,&patch.m_LastError);\r
+ ret = false;\r
+ }\r
+ Notify(m_targetPathList[i],git_wc_notify_sendmail_done,ret);\r
+ if(m_bCancelled)\r
+ return false;\r
}\r
- Notify(m_targetPathList[i],git_wc_notify_sendmail_done,ret);\r
- if(m_bCancelled)\r
- return false;\r
}\r
return ret;\r
}
\ No newline at end of file
// void SetRevisionEnd(const GitRev& rev) {m_RevisionEnd = rev;}\r
\r
void SetDiffOptions(const CString& opts) {m_diffoptions = opts;}\r
- void SetSendMailOption(CString &TO, CString &CC,DWORD flags){m_SendMailTO=TO; m_SendMailCC=CC;this->m_SendMailFlags = flags;}\r
+ void SetSendMailOption(CString &TO, CString &CC,CString &Subject,DWORD flags){m_SendMailTO=TO;m_SendMailSubject=Subject; m_SendMailCC=CC;this->m_SendMailFlags = flags;}\r
void SetDepth(git_depth_t depth = git_depth_unknown) {m_depth = depth;}\r
void SetPegRevision(GitRev pegrev = GitRev()) {m_pegRev = pegrev;}\r
void SetProjectProperties(ProjectProperties props) {m_ProjectProperties = props;}\r
DWORD m_SendMailFlags;\r
CString m_SendMailTO;\r
CString m_SendMailCC;\r
- \r
+ CString m_SendMailSubject;\r
+\r
/// CComPtr<IBugTraqProvider> m_BugTraqProvider;\r
\r
// some strings different methods can use\r