我有一张这样的桌子
详情| 日期
X1 | 2021 年 6 月 5 日
X2 | 2021 年 5 月 7 日
X3 | 2021 年 6 月 19 日
X4 | 2021 年 5 月 24 日
X5 | 2021 年 6 月 16 日我可以使用下面的代码发送电子邮件。但我想从本文末尾提到的代码中设置正文(如果没有找到数据,则不会使用 msgbox 发送电子邮件“无法发送电子邮件。未找到数据”)
正文应该是(其中日期 < 今天 + 31)
详情 = X1 日期 = 2021 年 6 月 5 日
详情 = X2 日期 = 2021 年 5 月 7 日
详情 = X4 日期 = 2021 年 5 月 24 日
代码
Sub Re_minder()
Dim NewMail As Object
Dim mailConfig As Object
Dim fields As Variant
Dim msConfigURL As String
On Error GoTo Err:
'late binding
Set NewMail = CreateObject("CDO.Message")
Set mailConfig = CreateObject("CDO.Configuration")
mailConfig.Load -1
Set fields = mailConfig.fields
With NewMail
.From = "sender@gmail.com"
.To = "recipient@gmail.com"
.CC = ""
.BCC = ""
.Subject = "TEST"
.TextBody = "test"
End With
msConfigURL = "http://schemas.microsoft.com/cdo/configuration"
With fields
.Item(msConfigURL & "/smtpusessl") = True
.Item(msConfigURL & "/smtpauthenticate") = 1
.Item(msConfigURL & "/smtpserver") = "smtp.gmail.com"
.Item(msConfigURL & "/smtpserverport") = 465
.Item(msConfigURL & "/sendusing") = 2
.Item(msConfigURL & "/sendusername") = "sender@gmail.com"
.Item(msConfigURL & "/sendpassword") = "********"
.Update
End With
NewMail.Configuration = mailConfig
NewMail.Send
MsgBox "Email sent", vbInformation
Exit_Err:
Set NewMail = Nothing
Set mailConfig = Nothing
End
Err:
Select Case Err.Number
Case -2147220973
MsgBox "Connection Error." & vbNewLine & Err.Number & ": " & Err.Description
Case -2147220975
MsgBox "Login ID / Password not correct." & vbNewLine & Err.Number & ": " & Err.Description
Case Else
MsgBox "Error in sending email." & vbNewLine & Err.Number & ": " & Err.Description
End Select
Resume Exit_Err
End Sub
电子邮件正文代码
For Each r In Intersect(Range("B:B"), ActiveSheet.UsedRange)
If r.Value < Now() + 31 Then
body_txt = body_txt & vbCrLf & "DETAILS = " & r.Offset(, -9).Value & " Date = > " &
r.Value
End If
Next r