Lift MailerのXmlノードではなく、StringからHtmlメールの本文を設定したいので、Mailerをサブクラス化し、buildMailBody
メソッドを再定義しました。
class HtmlMailer extends Mailer {
final case class HtmlMailBodyType(text: String) extends MailBodyType
override protected def buildMailBody(tab: MailBodyType) = {
tab match {
case HtmlMailBodyType(text) =>
val bp = new MimeBodyPart
bp.setText(text, charSet, "html")
bp
case _ => super.buildMailBody(tab)
}
}
}
object HtmlMailer extends HtmlMailer
私がそれを使おうとすると:
import net.liftweb.util.Mailer
import Mailer._
HtmlMailer.sendMail(From(sender.email), Subject(subject), To(user.email), HtmlMailBodyType(body))
コンパイルエラーが発生します:
error: type mismatch;
found : net.liftweb.util.Mailer.From
required: com.mypackage.HtmlMailer.From
Error occurred in an application involving default arguments.
HtmlMailer.sendMail(From(sender.email), Subject(subject), To(user.email), HtmlMailBodyType(body))
なぜこれが幸せなのですか、どうすれば正しく修正できますか?
import Mailer._をimportHtmlMailer._に変更しましたが、機能しましたが、パラメータータイプが異なるため、HtmlMailer
代わりに置換できないため、リスコフの置換原則に違反していると思いますか?Mailer