1# Receive an email to a val
2
3Every function val can be send an email: `username.valname@valtown.email`
4
5This val's email address is: `stevekrouse.testEmail@valtown.email`
5This example pulls from this gist: [example.js](https://gist.github.com/stevekrouse/c045b716c68790fad5f556e86fd46f3c)
6
7Which has this code: `export const hi = function() { return "Hi Nico!" }`
8
9
1# Nano Id
2
3## Function Usage
4
5```
1# OpenAI ChatGPT helper function
2
3This val uses your OpenAI token if you have one, and the @std/openai if not, so it provides limited OpenAI usage for free.
1# Dev Null
2
3A JS function and API inspired by `/dev/null` that will throw away whatever you send it and return `null`.
4
5## Function usage
6
7```
15## Why?
16
17Honestly I don't know why you'd use this function. I just made it as a joke to link to it from [@stevekrouse.dm](https://www.val.town/v/stevekrouse.dm). I guess you could also use it a joke to send data you want to call attention to the fact that you very much don't care about it, ie I **really** don't care about the price of bitcoin:
18
19```
11## Protocol
12
13Expose a `dm` function on your namespace that that accepts messages and some authentication data (described below). The easiest way to accomplish this is to fork this val.
14
15What you choose to do with direct messages is totally up to you. At the moment, I email myself your message and save it to a private array val. You could forward it along to yourself some other way, batch up messages to get a daily summary email if you're Mr. Popular, or send them to [/dev/null](https://www.val.town/v/stevekrouse.devNull) if you're Mr. Antisocial.
17## Authentication
18
19This protocol uses [my Val Town public key auth scheme](https://blog.val.town/public-key-auth-val-town-users-can-be-your-users), so you'll need to follow the first two steps of that blog post – (1) generate a keypair and (2) publish your public key – to authenticate to this function.
20
21## Usage
22
23You can call this function via the [@stevekrouse.runValAPIAuth](/v/stevekrouse.runValAPIAuth) helper:
24
25```js
6
7```js
8function testThisExpressUrl(req, res) {
9 let url = @stevekrouse.thisExpressURL();
10 res.send(`<a href="${url}">${url}</a>`);