We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Dear friends,
My question database project is nearly finished! I've managed to get my data lists working, create a working SMTP function, and I now boast 1,300+ questions. Woo! My final hurdle is this: where and how should I put my sendMail() command so that it will send me an email ONLY if the input text does not match anything in my data files? Where I have it right now (line 46) makes it send me an email after every question. Check it out:
String[] to_match;
String[] resps;
String top = "Ask me anything.";
String cur = "";
final int QUERY_LIMIT = 35;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
void setup() {
size(1200, 500);
textSize(20);
fill(0);
PFont jackFont;
jackFont = loadFont("CourierNewPSMT-48.vlw");
textFont(jackFont);
to_match = loadStrings("to_match_file.txt");
resps = loadStrings("resps_file.txt");
}
void draw() {
background(255);
fill(0);
text(top, 20,20, 1200,500);
fill(225, 0, 0);
text("> "+ cur+((millis()%1000)<500?(" "):("_")), 20,440, 1200,400);
}
void keyPressed() {
if (key>='a'&&key<='z') {
if (cur.length()<=QUERY_LIMIT) cur = cur + char(key+'A'-'a');
}
if (key>='A'&&key<='Z') {
if (cur.length()<=QUERY_LIMIT) cur = cur + char(key);
}
if (key==' '&&(cur.length()<=QUERY_LIMIT)) cur=cur+' ';
if (key=='?'&&(cur.length()<=QUERY_LIMIT)) cur=cur+'?';
if (key==DELETE||key==BACKSPACE) {
if (cur.length()>0) cur=cur.substring(0, cur.length()-1);
}
if (key==ENTER||key==RETURN) {
if(cur.charAt(cur.length()-1)!='?'){
top = "Please ask a QUESTION.";
} else {
top = "I don't know. Ask something else.";
sendMail(); //you'd think it would go here, wouldn't you?
}
for(int i=0; i < to_match.length; i++){
if(cur.equals(to_match[i])){
top=resps[i];
}
}
cur="";
}
}
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class Auth extends Authenticator {
public Auth() {
super();
}
public PasswordAuthentication getPasswordAuthentication() {
String username, password;
username = "bauhausrva@gmail.com";
password = "********";
System.out.println("authenticating. . ");
return new PasswordAuthentication(username, password);
}
}
void sendMail() {
// Create a session
String host="smtp.gmail.com";
Properties props=new Properties();
props.put("mail.pop3.host", "pop.gmail.com");
// SMTP Session
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "true");
// We need TTLS, which gmail requires
props.put("mail.smtp.starttls.enable","true");
// Create a session
Session session = Session.getDefaultInstance(props, new Auth());
try
{
// Make a new message
MimeMessage message = new MimeMessage(session);
// Who is this message from
message.setFrom(new InternetAddress("bauhausrva@gmail.com", "Ask Me Anything"));
// Who is this message to (we could do fancier things like make a list or add CC's)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("jackstarcat@gmail.com", false));
// Subject and body
message.setSubject("Quick Question:");
message.setText(cur);
Transport.send(message);
println("Mail sent!");
}
catch(Exception e)
{
e.printStackTrace();
}
}
Also, are there any edits that I can do to make this program run as Javascript so that I could upload it to OpenProcessing? I tried uploading an email-less version (I know libraries can be impossible to carry over) where the code created this http://www.openprocessing.org/sketch/216890 so any help on that score would be appreciated as well. If you know of a place besides OpenProcessing that can host Processing applications without too much hullabaloo, I'm all ears also!
Thanks! -Jack