回 帖 发 新 帖 刷新版面

主题:在邮件文本中如何书写超链接?

无论用哪种方式在VFP编写的程序中发送邮件,要直接发送,都要将文本斌给一个变量。如果这时需要在文本中引用超链接地址,该如何处理呢?

回复列表 (共27个回复)

沙发

按我的看法可以直接按照html代码格式书写,但经过试验后我认为起决定因素的是对方阅读邮件的途径,有的阅读器或邮箱网站,会自动识别网址变成链接方式,有的就不会。

a1='mailto:mozoho@163.com?subject=怎样发邮件&body=<html><body><a href="http://www.sz3tt.cn" title="三通物流公司"><img src="http://blog.programfan.com/upfile/200801/2008012320432.jpg"/></a></body></html>'

板凳


谢谢,我试试。

3 楼


试验表明,如果用附一的方式,邮件内容将变为以POSTDATA.ATT为名的附件(由于最初我未改信箱名,可能MOZ前辈已收到这样的信)。如果利用MSMAPI控件编程,使用附二的方式,除打双引号的链接地址名变色并带下划线外,会完全将超文本代码显示为内容(收到的信点超链接地址可打开网页)。不知有没有办法解决附一、附二中的问题?
附一:
a1='mailto:mozoho@163.com?subject=怎样发邮件&body=<html><body><a href="http://www.sz3tt.cn" title="三通物流公司"><img src="http://blog.programfan.com/upfile/200801/2008012320432.jpg"/></a></body></html>'
mr=CreateObject("Microsoft.XMLHTTP")
mr.open("get",a1,.f.)
mr.send(0)  && 参数为1或0均会直接发送,不出现写信对话框
release mr 

附二:
WITH THISFORM.MAPISess
 .LogonUI=.F.
 .DownloadMail=.F.
 .SignON
ENDWITH
THISFORM.MAPIMess.SessionID=THISFORM.MAPISess.SessionID
WITH THISFORM.MAPIMess
 .MSGINDEX=-1
 .COMPOSE    
 .RECIPDISPLAYNAME="mozoho@163.com"
 .MSGSUBJECT="标题"
 .MSGNOTETEXT='<html><body><a href="http://www.sz3tt.cn" title="三通物流公司"><img src="http://blog.programfan.com/upfile/200801/2008012320432.jpg"/></a></body></html>'
 .SEND(1)
ENDWITH
THISFORM.MAPISess.SIGNOFF

4 楼

按理所当然的想法,附一也应该是发送正文而不是附件,也许是某些邮件处理程序的差别吧。

从你附一附二的结果,我仍然坚持之前的看法:关键是收件人阅读邮件的方式。

如果是智能的邮件阅读器,会自动识别网址并加下划线为链接方式,
如果是文本阅读器,只会识别是文本,
两者几乎都不认html代码的作用,而当作是正文看待了。

是否可以换一种想法,以index.html文件作为附件来发送是否可行?

5 楼

我用的邮件程序是‘Outlook Express’,用附一、附二两种方式,就是有上面所说的差异(用附一的方式,即使变量值不引用超文本符号,内容也都是以附件形式出现)。
    MOZ前辈建议以附件的形式发送超文本文件来解决超链接的问题。我想如果那样的话,对编程的人或收信件的人说来,都有点麻烦。不如在附二的方法中,SEND()方法中使用参数1(打开写信对话框,提供对程序给出的信件的修改),让发件人手工插入超链接。

6 楼

我的试验方法是在浏览器里输入以下地址,估计跟你在程序里调用的地址是一致的:
[url]mailto:mozoho@163.com?subject=怎发邮件&body=http://www.sz3tt.cn[/url]

然后我发现在我的Outlook Express的下方有三个页面选项:编辑、源文件、预览
我注意到源文件里有html代码,于是使尝试复制该代码,结果发现很多如空格等ASC码等代码会自动转换成转义符,效果并不理想。
但Outlook却自动识别了网址,这个时候我突然想起来,应该是我昨晚设置了发送方式的缘故,所以才会有“编辑、源文件、预览”的选项:
[color=ff00ff]Outlook Express - 工具 - 选项 - 发送 - 邮件发送格式 - HTML[/color]
设置后运行上面的代码,得到网址的便自动成为超链接方式了.可以在源文件页面上看得到的.
我已经证实过了.

7 楼

MOZ前辈,按您的说明,我查看了Outlook Express的设置,结果我的Outlook Express已经是那种设置。
    按您的方法,我将附二的.MSGNOTETEXT的设置改为"尊敬的用户,您好:"+chr(13)+chr(10)+chr(13)+chr(10)+"您在"+注册网站+"软件注册网站的注册信息如下。网盘http://www.sz3tt.cn"这种形式,链接http://www.sz3tt.cn就能正常显示了。唯一不足是,它要提行,不好在它前面加链接提示。
附一的函数始终存在内容变附件的问题。改为下面的函数能正常显示和发送。
a1='mailto:masach@163.com?subject=怎样发邮件&body=http://www.sz3tt.cn  三通物流公司'
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING lpszFile, STRING, STRING, INTEGER 
ShellExecute(0,"open",a1,0,0,1)
    愦憾的是,我不知道这函数的参数,不知用它能不能直接发送,也不知可不可发附件。

8 楼

在网上看了一下,看到有用CDO方式发送的,代码如下:
    Email = CreateObject("CDO.Message")
    Email.From = "vfp001@sohu.com"
    Email.To = "mozoho@163.com"
    Email.Subject = "国内空运代理!"
    Email.Textbody = "你收到用VFP代码发送的邮件了!"
    Email.HtmlBody="国内航空货运:<a href=http://www.sz3tt.cn>三通物流</a>"
    Email.AddAttachment("C:\boot.bak")
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.sohu.com" 
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "vfp001"
    Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "123456"
    Email.Configuration.Fields.Update
    Email.Send

事实上并没有成功,我估计是服务端不接收明文密码又或者验证通不过之类的吧,也许可以换一些小一点的免费邮箱试试是否能成功.


[url]http://bbs.pfan.cn/post-286041.html[/url]
这一张贴说的是用MAPI控件发送的,但具体使用方法我没有办法实现,
因为我在插入ActiveX控件的时候找不到该控件.

9 楼

我附二的代码就是按你介绍的“286041.html”网页处理的。您介绍的CDO方式,我的试验显示,五个Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")函数使用方法不对(函数参数的值、数目或类型无效)

10 楼

在我这里可能通过呢,
不过我查过CDO方式也许是不需要这些.Item( )的,
好像前提是当前操作系统使用了邮件服务器方式,
我安装的是2003,也装了IIS,但具体的设置我还是没有弄明白,
或者你可以看看这个是否有帮助.
[url=http://www.microsoft.com/china/technet/community/scriptcenter/resources/hey1129.mspx]微软的脚本指导[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册