@ -8,6 +8,7 @@ import (
"encoding/hex"
"encoding/hex"
"errors"
"errors"
"fmt"
"fmt"
"path"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/base"
@ -135,7 +136,7 @@ func SendIssueNotifyMail(user, owner *models.User, repo *models.Repository, issu
return tos , nil
return tos , nil
}
}
subject := fmt . Sprintf ( "[%s] %s" , repo . Name , issue . Name )
subject := fmt . Sprintf ( "[%s] %s(#%d) " , repo . Name , issue . Name , issue . Index )
content := fmt . Sprintf ( "%s<br>-<br> <a href=\"%s%s/%s/issues/%d\">View it on Gogs</a>." ,
content := fmt . Sprintf ( "%s<br>-<br> <a href=\"%s%s/%s/issues/%d\">View it on Gogs</a>." ,
base . RenderSpecialLink ( [ ] byte ( issue . Content ) , owner . Name + "/" + repo . Name ) ,
base . RenderSpecialLink ( [ ] byte ( issue . Content ) , owner . Name + "/" + repo . Name ) ,
base . AppUrl , owner . Name , repo . Name , issue . Index )
base . AppUrl , owner . Name , repo . Name , issue . Index )
@ -146,17 +147,48 @@ func SendIssueNotifyMail(user, owner *models.User, repo *models.Repository, issu
}
}
// SendIssueMentionMail sends mail notification for who are mentioned in issue.
// SendIssueMentionMail sends mail notification for who are mentioned in issue.
func SendIssueMentionMail ( user , owner * models . User , repo * models . Repository , issue * models . Issue , tos [ ] string ) error {
func SendIssueMentionMail ( r * middleware . Render , user , owner * models . User ,
repo * models . Repository , issue * models . Issue , tos [ ] string ) error {
if len ( tos ) == 0 {
if len ( tos ) == 0 {
return nil
return nil
}
}
issueLink := fmt . Sprintf ( "%s%s/%s/issues/%d" , base . AppUrl , owner . Name , repo . Name , issue . Index )
subject := fmt . Sprintf ( "[%s] %s(#%d)" , repo . Name , issue . Name , issue . Index )
body := fmt . Sprintf ( ` %s mentioned you. ` , user . Name )
subject := fmt . Sprintf ( "[%s] %s" , repo . Name , issue . Name )
data := GetMailTmplData ( nil )
content := fmt . Sprintf ( "%s<br>-<br> <a href=\"%s\">View it on Gogs</a>." , body , issueLink )
data [ "IssueLink" ] = fmt . Sprintf ( "%s/%s/issues/%d" , owner . Name , repo . Name , issue . Index )
msg := NewMailMessageFrom ( tos , user . Name , subject , content )
data [ "Subject" ] = subject
body , err := r . HTMLString ( "mail/notify/mention" , data )
if err != nil {
return fmt . Errorf ( "mail.SendIssueMentionMail(fail to render): %v" , err )
}
msg := NewMailMessageFrom ( tos , user . Name , subject , body )
msg . Info = fmt . Sprintf ( "Subject: %s, send issue mention emails" , subject )
msg . Info = fmt . Sprintf ( "Subject: %s, send issue mention emails" , subject )
SendAsync ( & msg )
SendAsync ( & msg )
return nil
return nil
}
}
// SendCollaboratorMail sends mail notification to new collaborator.
func SendCollaboratorMail ( r * middleware . Render , user , owner * models . User ,
repo * models . Repository ) error {
subject := fmt . Sprintf ( "%s added you to %s" , owner . Name , repo . Name )
data := GetMailTmplData ( nil )
data [ "RepoLink" ] = path . Join ( owner . Name , repo . Name )
data [ "Subject" ] = subject
body , err := r . HTMLString ( "mail/notify/collaborator" , data )
if err != nil {
return fmt . Errorf ( "mail.SendCollaboratorMail(fail to render): %v" , err )
}
msg := NewMailMessage ( [ ] string { user . Email } , subject , body )
msg . Info = fmt . Sprintf ( "UID: %d, send register mail" , user . Id )
SendAsync ( & msg )
return nil
}