[R] rJython matrix message

Steve Lianoglou mailinglist.honeypot at gmail.com
Wed Sep 14 17:57:27 CEST 2011


Hi,

On Wed, Sep 14, 2011 at 11:44 AM, Ben qant <ccquant at gmail.com> wrote:
> Hello,
>
> I've posted something similar under a different subject and never received a
> solution. Trying again with (hopefully) a better description.
>
> Objective: Send a matrix of string data in an email message. The message
> must have authentication and be sent via an R script.
>
> I'm almost there!
>
> Here is where I am at:
> I collect long error message lines in 'errs', which is a matrix.

(I might collect this into a list, but that's just a matter of style)


> Then I collapse them into a character vector via:
>
> errs = paste(errs, collapse = "")
>
> Then I send that in a email via rJython. The message is sent to an Microsoft
> Outlook address like this:
>
> mail = c(  ....etc...
> paste("msg = MIMEText('",errs,"')",sep=""),
> ...etc....)
>
> ...etc... [the rest of the rJython stuff to send a message omitted here]
>
> jython.exec(rJython,mail)
>
> The problem: The issue is that the message wraps the text in the body of the
> message so that the message just looks like one big line of text which makes
> it very difficult to read (aka is not acceptable).
>
> Notes:
> 1) The message must have authentication; therefore, I am using rJython. (My
> understanding is that there is no R way to send an email message with
> authentication.)
> 2) I have to receive the message in Outlook.
> 3) When I do errs = paste(errs, collapse = "\n"), and pass that as the
> message text, rJython gives me an error:
> Error in ls(envir = envir, all.names = private) :
>  invalid 'envir' argument

It's hard to imagine why this would happen. using `paste(errs,
collapse="")` vs. `paste(errs, collapse="\n")` will provide you with
one character vector/string, so I've got to believe the problem is
somewhere else.

Just a stab in the dark, but does `paste(errs, collapse="\\n")` give
you problems?

What if you take your `errs = paste(errs, collapse="\n")` and call
`writeLines` on `errs` to a tmp file that you provide the path for to
rJython, which then reads the file and append into a message.

Also -- if you want to be reading the file "normally" on windows,
shouldn't you be using windows line endings (I think "\r\n"), or does
outlook recognize "\n" as a new line (I'm imagining if you do get the
whole thing to work, outlook might still just show you one long line
since "\n" alone isn't recognized as a newline command on windows
(last time I checked)).

-steve

-- 
Steve Lianoglou
Graduate Student: Computational Systems Biology
 | Memorial Sloan-Kettering Cancer Center
 | Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact



More information about the R-help mailing list