尝试通过方法发送电子邮件。 我有一个方法
addHeader: headername with: aString
|email|
email:= aString.
'To'= headername ifTrue[ self message: 'To:', with ].
'From'= headername ifTrue[ self message: 'From:', with].
'Subject'= headername ifTrue[ self message:'Subject', with].
我的问题是Workspace
addHeader:'To' with:'abcde@gmail.com'.
addHeader:'From' with:'efg@gmail.com'
当我逐个执行上面的代码时。应将所有这些值添加到此方法中。
message: aString
"Recieves To: abcde@gmail.com"
^ message
"next time when it recieves From: efg@gmail.com. How can i concatenate
both earlier String and current String"
如何获得此结果
'To: abcde@gmail.com
From: efg@gmail.com'
答案 0 :(得分:4)
我不确定我到底想要做什么。无论如何,我们假设您要发送指定发件人,主题等的邮件。有不同的方法可以做到这一点,但是在每种情况下你都必须在方法的不同调用之间保持状态,这是通过定义一个实例变量(或更多变量,取决于你选择遵循的方式)来完成的。如果要保留方法的签名,即继续使用单个方法添加标题的不同部分,可以使用包含Dictionary的单个var。
这可以定义一个包含单个实例变量的Header类,该变量将包含一个Dictionary,例如headerDictionary
。必须在类方法new
中初始化此var,如下所示:
new
headerDictionary := Dictionary new.
此时,您的addHeader:email:
方法可以简单地将值放在字典中,如果没有if或外部方法(BTW我不会将其称为addHeader:email:
,因为例如Subject的值是不是电子邮件,但这些只是花里胡哨的东西):
addHeader: headerName email: aString
headerDictionary at: headerName put: aString.
以这种方式,在您的工作区中,您可以执行以下行,最后使用包含所需值的hdr中包含的字典:
hdr := Header new.
hdr addHeader:'To' email:'abcde@gmail.com'.
hdr addHeader:'From' email:'efg@gmail.com'.