gpt4 book ai didi

scala - 通过电子邮件发送 Spark DataFrame

转载 作者:行者123 更新时间:2023-12-05 03:10:09 24 4
gpt4 key购买 nike

我正在处理这个项目,我需要在 spark 数据框中获取表数据并通过邮件发送。使用的语言是 Scala。

保存表格数据的数据框如下:-

val sqlDfUT = hiveCon.sql("select * from UserTable")

我需要在邮件中将“sqlDfUT”作为邮件正文发送。

发送邮件的代码是:

sendScalaMail("monitor@foo.com","Users Data Sent : \n " + sqlDfUT +
",\nMail sent from host: " + java.net.InetAddress.getLocalHost().getHostName(),
"12525","Hive Data Checking completed for given User: 12525" )

def sendScalaMail (mailSender:String, strMailBody:String, mailIdList:String, strMailSubj:String)={

if ((mailIdList == null) && (mailIdList.equals(""))){

writeToLog("Email ID not defined")
}
writeToLog("<----Sender---->"+mailSender)
writeToLog("<----strMailBody---->"+strMailBody)
writeToLog("<----mailIdList---->"+mailIdList)
writeToLog("<----strMailSubj---->"+strMailSubj)

val smtpHost:String = "mail.foo.com"
val prop:Properties = new Properties()
prop.put("mail.smtp.host", smtpHost)
prop.put("mail.debug", "false")
var session:Session = Session.getInstance(prop)
var toPersonList:Array[String] = mailIdList.split(",")

var toMailListSB:StringBuffer = new StringBuffer()
var toPersonName:String = ""
var toMailId:String = ""
var index:Int = 0

for(index <- 0 to toPersonList.length){

toPersonName = toPersonList(index).asInstanceOf[String]
toMailId = toPersonName+"@mail.foo.com"
toMailListSB.append(toMailId)
toMailListSB.append(";")

}
try{
var msg:MimeMessage = new MimeMessage(session)
msg.setFrom(new InternetAddress(mailSender))
var toList:Array[String] = toMailListSB.toString().split(",")
var address:Array[InternetAddress] = new InternetAddress(toList.length.toString()).asInstanceOf[Array[InternetAddress]]
var i:Int = 0
for(i <- 0 to toList.length){
address(i) = new InternetAddress(toList(i))
}
msg.setRecipients(Message.RecipientType.TO, address)
msg.setHeader("Content-Type", "text/html")
msg.setSubject(strMailSubj)
msg.setSentDate(new Date())
msg.setContent(strMailBody, "text/html")

Transport.send(msg)

}
catch{
case me:MessagingException =>{
me.printStackTrace()
writeToLog("<---Error in method sendScalaMail--->"+me)
}
} }

但是,我在行中遇到了错误

msg.setRecipients(Message.RecipientType.TO, address)

错误信息是

overloaded method value setRecipients with alternatives: (x$1: javax.mail.Message.RecipientType,x$2: String)Unit <and> (x$1: javax.mail.Message.RecipientType,x$2: Array[javax.mail.Address])Unit cannot be applied to (javax.mail.Message.RecipientType, Array[javax.mail.internet.InternetAddress])

如果能得到任何指导,我将非常高兴。谢谢

最佳答案

var address:Address = new InternetAddress(toMailId).asInstanceOf[Address]

这对我有用!!谢谢拉斐尔 :)

关于scala - 通过电子邮件发送 Spark DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com