`
liuyp2003
  • 浏览: 54541 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

在DOMINO中编程发送HTML/MIME邮件

阅读更多
Notes邮件显然是支持HTML/MIME的了。在Notes客户端RTF域里面写的邮件无论是文本、图片还是附件都能直接转为MIME发送出去,在Web下写在HTML编辑器里面的东西也能转成MIME的发出去。如何在程序里面发送HTML/MIME邮件呢?其实也很简单,就是用到 Domino的两个类:NotesMimeEntity和NotesMimeHeader就足够了。

1、发送HTML文本含图片

Sub SendMIMEMail
On Error Goto ErrorHandler

sImage$ = “seal.jpg”

sHtml$ = {
<table border=”0″ cellpadding=”0″ cellspacing=”0″ width=”700″ align=”center”>
<tr>
<td><img src=”cid:} + sImage$ + {“></td>
</tr>
</table>
}

session.ConvertMIME = False

Dim doc As NotesDocument
Set doc = curDb.CreateDocument

Call doc.ReplaceItemValue(“Form”, “Memo”)
Call doc.ReplaceItemValue(“Principal”, “xxx@163.com“)

Dim body As NotesMimeEntity
Dim header As NotesMimeHeader

Set body = doc.CreateMIMEEntity(“body”)

Set header = body.CreateHeader(“Content-Type”)
Call header.SetHeaderVal(“multipart/related”)

Set header = body.CreateHeader(“Subject”)
Call header.SetHeaderVal(“MIME TEST!!!!”)

Set header = body.CreateHeader(“To”)
Call header.SetHeaderVal(“xxx@gmail.com“)

Dim stream As NotesStream
Set stream = session.CreateStream

Dim child As NotesMimeEntity

Set child = body.CreateChildEntity
Call stream.WriteText(sHtml$)
Call child.SetContentFromText(stream, “text/html;charset=gb2312″, ENC_NONE)
Call stream.Close()

Set child = body.CreateChildEntity
Set header = child.CreateHeader(“Content-ID”)
Call header.SetHeaderVal(sImage$)
If stream.Open(“C:\” + sImage$) Then
If stream.Bytes <> 0 Then
Call child.SetContentFromBytes(stream, {image/jpeg; name=”} + sImage$ + {“}, ENC_IDENTITY_BINARY)
End If
End If
Call stream.Close()

session.ConvertMIME = True
Call doc.Send(False)

Exit Sub
ErrorHandler: Call curLog.Debug(1)
End Sub


在HTML插入图片的关键是这一句:<img src=”cid:seal.jpg”>

其中cid:seal.jpg就是后面创建的一个NotesMimeEntity,注意这个NotesMimeEntity加了一个名字是Content-ID值为seal.jpg的NotesMimeHeader。如此这个图片就能在邮件里面显示了。

2、发送附件

在Notes编程里面发送附件的方式至少有两种,一种是通过NotesRichTextItem的EmbedObject方法将附件扔到$File 域中,然后发送文档;另一种还是通过上面说得NotesMimeEntity和NotesMimeHeader的方式来发送。这里只说后面一种:

Sub SendMIMEMail
On Error Goto ErrorHandler

sAttach$ = “struts.txt”

session.ConvertMIME = False

Dim doc As NotesDocument
Set doc = curDb.CreateDocument

Call doc.ReplaceItemValue(“Form”, “Memo”)
Call doc.ReplaceItemValue(“Principal”, “xxx@163.com”)

Dim body As NotesMimeEntity
Dim header As NotesMimeHeader

Set body = doc.CreateMIMEEntity(“body”)

Set header = body.CreateHeader(“Content-Type”)
Call header.SetHeaderVal(“multipart/related”)

Set header = body.CreateHeader(“Subject”)
Call header.SetHeaderVal(“MIME TEST!!!!”)

Set header = body.CreateHeader(“To”)
Call header.SetHeaderVal(“xxx@gmail.com“)

Dim stream As NotesStream
Set stream = session.CreateStream

Dim child As NotesMimeEntity

Set child = body.CreateChildEntity
Call stream.WriteText(sHtml$)
Call child.SetContentFromText(stream, “text/html;charset=gb2312″, ENC_NONE)
Call stream.Close()

Set child = body.CreateChildEntity
Set header = child.CreateHeader(“Content-Type”)
Call header.SetHeaderVal(“multipart/related”)
Set header = child.CreateHeader(“Content-Disposition”)
Call header.SetHeaderVal(“attachment; filename=” + sAttach$)
Set header = child.CreateHeader(“Content-ID”)
Call header.SetHeaderVal(sAttach$)
If stream.Open(“C:\” + sAttach$) Then
If stream.Bytes <> 0 Then
Call child.SetContentFromBytes(stream, “application/octet-stream” + {“}, ENC_IDENTITY_BINARY)
End If
End If
Call stream.Close()

session.ConvertMIME = True
Call doc.Send(False)

Exit Sub
ErrorHandler: Call curLog.Debug(1)
End Sub
分享到:
评论
2 楼 sky3010 2012-06-02  
你好,我想用C#实现发送图片的,但是在这里
“If stream.Open(“C:\” + sAttach$) Then 
If stream.Bytes <> 0 Then ”
C#是stream.Open(filePath,"binary")
一直返回false
可以给点建议吗?
1 楼 sky3010 2012-05-31  
找了好久这样的资料,终于找到了,多谢这位大哥了

相关推荐

Global site tag (gtag.js) - Google Analytics